Monday, October 31, 2016

Hollow Bolt Torque Specification

While I've come up with a variety of sources for torque tables for both English and Metric bolts, I've run into a problem with finding a good torque setting for my uninsulated binding post for grounding. It's this one, which is made of nickel coated brass and is hollow to accept a banana jack:

https://cinchconnectivity.com/OA_HTML/ibeCCtpItmDspRte.jsp?sitex=10020:22372:US&item=4252201
https://octopart.com/111-2223-001-emerson+network+power+-+johnson-29988

Its "datasheet" is sparse and blithely omits maximum torque for the nut. As it turns out, torquing it to 77 inch-lbs as you would for a brass 1/4-32 bolt simply pulls this thing apart!

http://www.engineersedge.com/torque_table_sae.htm

There are a variety of similar uninsulated banana jacks or binding posts which also don't have mounting torque specified.

http://www.grayhill.com/assets/1/7/pushpoststerm.pdf
http://keyelco.com/userAssets/file/M65p111.pdfhttps://cinchconnectivity.com/OA_MEDIA/specs/pi-108-0740-001.pdf
http://www.pomonaelectronics.com/pdf/d3267_1_01.pdf
http://www.caltestelectronics.com/images/attachments/CT2220_drawing.pdf
http://www.caltestelectronics.com/images/attachments/CT2232_drawing.pdf

Torque is specified for all kinds of plastic-bodied banana jacks, but those values are going to be lower than what I'd want to use because I want this thing to be given the best possible connection to the front panel to ensure good grounding.

This catalog contains one tightening torque for a panel mount banana jack. Its 120 N*cm which translates to about 10 inch-lbs, which is interesting because this is for a plastic mounting body. https://www.radiall.com/media/wysiwyg/BananaPlugs_catalog_D7M00CE_1_ed_2011_.pdf
This datasheet seems to be useless, it specified a torque but it seems to be for the little terminal screw on the back rather than the body. It's also a shockingly low torque spec. http://www.pomonaelectronics.com/pdf/d72930_002.pdf
There is one torque spec in this PDF of three different parts' datasheets. It's 6 inch-lbs, but it's clearly for a plastic-bodied part.
https://www.egr.msu.edu/eceshop/Parts_Inventory/datasheets/insulated%20binding%20post.pdf

I looked around again for online torque calculators, but was unable to find one that produced results for anything but standard bolts.

This seems to be a pretty nice torque calculator, and it even had a "hollow screw" option but for some reason that option didn't work, the tool simply resets. http://www.online-iso-calculator.com/online-bolt-torque-calculator-metric-vdi-2330/us/index.php
Here is another nice torque calculator, but it didn't seem to have a "hollow screw" option. It does allow you to put in your own tensile strength, and I played around with putting tensile strength for brass into this one but still got ridiculously high torque specs: http://www.futek.com/boltcalc.aspx
Here is a cute online calculator for converting between Nm and inch-lbs: http://www.numberfactory.com/nf_torque.html
I found several references to a "NASA Fastener Design Manual" NASA-RP-1228. However even NASA sites like this one had dead links to it: http://www.grc.nasa.gov/WWW/StructuresMaterials/TribMech/publications.html
I did eventually find a copy of NASA-RP-1228 and it's very nice but largely filled with theory with nothing I can just directly reference for this problem

I finally had an idea that a similar product that would be more likely to have a torque spec would be panel mount BNC connectors. It was still hard to find something, and the information that I found had to be derated because BNC connectors are usually steel rather than brass and a wider diameter.

Here is a page all about BNC connectors with unsourced recommendations for jam nut torques (below the section for interconnect torques, which are a much bigger deal for BNC and other RF connectors). For 1/4-inch it has an implausibly low 3-5 inch lbs recommended. https://www.microwaves101.com/encyclopedias/connector-torque

This datasheet had an extremely high 25 inch-lbs listed for jam nut maximum mounting torque. Presumably I could apply some derating to that: http://www1.futureelectronics.com/doc/TYCO%20ELECTRONICS/5227169-8.pdf



I eventually also had the brainstorm that toggle switches are also panel mount, hollow with jam nuts, and about the size of my insulating binding post. Amazingly, it was still difficult to find a switch datasheet that had a spec for a mounting nut torque.

The best source that I found for switches was the NKK datasheet for their M series (minature) toggle switches. Its spec is still a bit murky however, it lists an incredible 26 inch-lbs for "large bushing" switches, and two specs, 13 and 6 inch-lbs for double nut vs single nut (not completely sure what that even means but I think it's whether there is a nut on the shaft in the back or if only a front nut is used). http://2t70un3m1d9z1kztamkdrd38.wpengine.netdna-cdn.com/wp-content/uploads/2016/02/MtogglesBushing.pdf

NKK's extremely well organized site with other links is here: http://www.nkkswitches.com/products/toggle/#jump-post-103




Verizon Wireless data usage check

I found out that there are several ways to check how much of my monthly data I've used up for my Verizon Wireless phone.

It turns out that the easiest way is to dial #DATA

Source: http://www.verizonwireless.com/news/article/2011/07/pr2011-07-01d.html

Thursday, October 27, 2016

Python command line arguments

I needed to be able to pass an argument into my program to allow it to run in two different ways. The syntax of the constructor that I'd simply copied from something else a long time ago is weird. It turns out that these are two different problems. Neither wasn't so bad once I dug into them.

To pass an argument into the program from the command line, just use c-like argc and argv:

http://www.cyberciti.biz/faq/python-command-line-arguments-argv-example/

The constructor is using a pythonic trick of indirectly referencing a function's argument list. It's nothing to do with the command line and isn't specific to constructors:

http://stackoverflow.com/questions/3394835/args-and-kwargs

https://mail.python.org/pipermail/tutor/2006-August/048394.html

https://pythonprogramming.net/styling-gui-bit-using-ttk/

Tuesday, October 25, 2016

python tkinter label 2

Tired of not having the scrollbar that I wanted on my event log window, I finally revisited my earlier searches and figured out why I hadn't been able to get it working the first time and got it working.

The main thing that had confused me was that placing objects in a "Canvas" widget is not the same thing as packing Frames together. It's almost like there is an entirely separate language within Tkinter for Canvasses. Additionally, it takes a while to pick up on the fact that the scrollbar is a separate widget that is not actually a part of the Canvas or any Frame or other object, you simply place it to the side of the Canvas such that it looks related and then you link its position property to the "view" property of the Canvas (there is a vertical view property and a horizontal view property; in my case I am using one scrollbar to control only the vertical view).

The trick to getting the geometry right was to define a Frame of fixed size, put the Canvas and the scrollbar side by side in the Frame such that their edges fill it, then put a Frame in a window on the Canvas and then inside that Frame put a text Label which can expand, which will cause the Frame containing it to expand as needed. (In my case I set the width and wraplength properties of the Label to ensure that it would not expand in the horizontal direction, because I didn't want to have a horizontal scrollbar for my event window, just a vertical scroll bar.) After doing this, the Label is allowed to get as big in the vertical direction as it wants, as in my first implementation. but the amount of text that shows is framed by the size of the window on the Canvas that is holding the interior Frame, and the location of the view of that Frame through the window that is showing on the Canvas is controlled by scrollbar. I did have to define an initial size for the interior Frame which matched the expected size of the viewable canvas area produced by the size of the fixed outside Frame minus the size of the scrollbar, but the size of the inside Frame was not fixed.

The part that I couldn't get right for the longest time is the part where you put the interior Frame in the Canvas. That is because it is not the same mechanism as for the rest of Tkinter, where you are "packing" Frames together inside other Frames. A Canvas is intended to have anything just anywhere on it and allows for overlapping and layering. The interior Frame is inside a "window" of the canvas, and you don't "pack" windows, you "create" them for the canvas. It took forever to get the syntax right for creating the window with the frame inside it and anchoring it where I wanted it. To do it, create a Canvas with an exterior Frame as its root and pack it into the Frame, then create another Frame for the interior frame and use the Canvas.create_window() function which has an argument that links to the frame object that you want to put in the window, a starting coordinate for the location of the window on the canvas, and an anchor geometry argument which I think overrides the coordinate argument. The Label widget can be created and packed into the interior Frame at any time.

Now that I had a window with a Frame inside it that had an expanding Label widget inside it, on a canvas that had a fixed size due to being packed into a nonexpanding Frame next to a scrollbar, I had to link the scrollbar to the viewing area of the window. This requires two things; one that the scrollbar position output is linked to the canvas's yview parameter (why it's the canvas's yview parameter and not the window's, I'm not quite sure), and two that every time the frame expands that the scrollbar's scroll region "size" is adjusted.

To link the scrollbar to the canvas is easy; it's almost as if the creators of Tkinter somehow anticipated that programmers would want to do this and intentionally made the output type of the scrollbar the same type as the inputs for the canvas view function. So it's just a matter of setting the scrollbar to use the canvas's yview as the position that the scrollbar shows its position as, and the canvas's yscrollcommand to be called every time the scrollbar set() function is triggered by the user adjusting the scrollbar. The output of the scrollbar set() function is fed directly into the yscrollcommand function using the following super compact syntax:

Canvas.configure(yscrollcommand=Scrollbar.set)

To make the viewable area that the scrollbar can access change every time that new lines are added to the StringVar for the Label object, the technique is to define something for the callback for the Frame's "Configuration". I.e. if the frame size changes (due to stretching), it is considered a change in configuration and whatever is defined in the Configuration callback gets executed. Normally that stub is empty, but all I have to do is put in some code that sets the "scrollregion" parameter of the canvas to the frame's new size; the size of the scrollbar's scroll region is already linked to that parameter earlier in the setup code so it passes through. Again, the command syntax is super compact (i.e. opaque), but it looks something like this:

Canvas.configure(scrollregion=Canvas.bbox("all"))

The other tricky part was in that I wanted my text to scroll up from the bottom, with old text disappearing from view at the top, with the scrollbar adjusting in size to match the new number of lines but the view remaining anchored at the bottom unless the user began using the scrollbar to see text that had scrolled up. To accomplish this, I added something to the Frame Conguration callback so that each time the frame stretched, the last thing the callback did was manually set the scrollbar's position to the bottom. It actually does this by setting the Canvas's yvivew to the bottom; the scrollbar setting just updates accordingly. The yview position is defined as a fractional value, ranging from 0.0 to 1.0, so this command sets it to 1.0

Canvas.yview_moveto(1.0)

However, this also results in a problem, because for some reason, every time the user grabs the scrollbar and tries to scroll up, it triggers a Configure callback for the frame for some reason, and the user setting the scrollbar position and the callback trying to set it to 1.0 would conflict quite badly. The answer was to look at the frame height every time the Configure callback was called and compare it to a stored previous value; if the frame height hadn't changed then the reason for the callback must not have been due to adding a new line of text, so there is no reason to set the viewing position back to the bottom.

Below is my code where I define the geometry of everything. As before, f is the root frame, and f5 is a frame where my status window will go below four other frames containing other stuff:

f5 = Tkinter.Frame(f, bd=1, relief="groove", width=720,height=100)
# The next line makes sure that the frame does not stretch based on its contents
f5.pack_propagate(0)
f5.pack(anchor="w",padx=10)

# Have to set the canvas width or it defaults to something stupid
self.statuscanvas=Tkinter.Canvas(f5,width=700,height=100)

# Add a scrollbar to f5 which controls the yview of the canvas
self.statusscrollbar=Tkinter.Scrollbar(f5,orient="vertical",command=self.statuscanvas.yview)
self.statuscanvas.configure(yscrollcommand=self.statusscrollbar.set)

# Pack the scrollbar on the right and the canvas on the left inside f5
self.statusscrollbar.pack(side="right",fill="y")
self.statuscanvas.pack(side="left")

# Now make a frame with the status message label in it
f5i = Tkinter.Frame(self.statuscanvas,width=2800,height=100)
self.stattext = Tkinter.StringVar()
self.stattext.set("")
self.status = Tkinter.Label(f5i,textvar=self.stattext, justify="left",anchor="sw",width=900, wraplength=640)
self.status.pack(side="bottom")

# Add the status frame as a window in the canvas
self.statuscanvas.create_window((0,0),window=f5i,anchor="nw")

# Add a callback to the frame so that every time it changes size the scrollbar can be resized
self.statusheight = 0
f5i.bind("",self.scrollbarConfigure)

Here is the code for the callback of the frame inside the canvas that is triggered every time the frame configuration changes (i.e. as a result of a resize due to the frame stretching) so that we can set the scrollbar's size to match the new size of the frame and the scrollbar can scroll the canvas's view over the entire new size of the frame:

def scrollbarConfigure(self,event):
self.statuscanvas.configure(scrollregion=self.statuscanvas.bbox("all"))
if not(event.height == self.statusheight):
self.statuscanvas.yview_moveto(1.0)
self.statusheight = event.height

So, here is a quick dump of the useful links that enabled me to figure this out:

These are the original two links that I saved from my first search. I studied them until beads of blood popped out on my forehead:
http://stackoverflow.com/questions/7113937/how-do-you-create-a-labelframe-with-a-scrollbar-in-tkinter
http://stackoverflow.com/questions/16188420/python-tkinter-scrollbar-for-frame

Here are some new very good links from my second Google search:
http://stackoverflow.com/questions/26979190/tkinter-simple-scrollable-text
http://knowpapa.com/scroll-text/
http://stackoverflow.com/questions/111155/how-do-i-handle-the-window-close-event-in-tkinter

Wednesday, October 19, 2016

Raspberry Pi PDF viewer

Did a search of this, found a nice solution, then when I downloaded an updated version of NOOBS it came with a much nicer PDF viewer built in along with all the Libre stuff.

This link suggested using the xpdf viewer and gives a command line example. This worked although the xpdf viewer is quite bare-bones. https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=8005

I had another link that showed how to set up the double-click response for a particular file type, but I've lost the link. This other one talks a newbie similar to myself through how to bring up the GUI menu for doing the association (just right-click on the file and find the equivalent option to "Open With..."). https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=98015




Sunday, October 16, 2016

Raspberry pi 3 RTC

Now that it's time to add an RTC to the Pi like I did with the Beagle Bone, I can now enjoy the much greater wealth of options for the Pi. I can also finally learn the correct way to install one using Device Tree since Raspian has gone that way like everyone else.

It turns out that the most common RTC is a tiny single-board, single chip solution that takes advantage of how the first four adjacent pins on the GPIO header are power, ground and i2c bus. Links:

The RTC board that I ordered. It seems that there are a couple of manufacturers doing this design and hard to tell who was first: https://www.sunfounder.com/ds3231-real-time-clock-module.html

One setup guide: http://www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/

Another setup guide: https://trick77.com/adding-ds3231-real-time-clock-raspberry-pi-3/

Here is a nice guide that shows configuration methods for both the old (modules) method and the new (Device Tree) method. It mentions steps for disabling the fake hwclock but it doesn't look like it shows the full procedure: http://www.bashpi.org/?page_id=500

Basically all the good guides are from this one google search: https://www.google.com/#q=sunfounder+ds3231+how+to+install

Having followed those installation guides, somehow it was coming up after rebooting with times that were only close to the current time although not reset to any particular default. It really seemed like the "fake hardware clock" was stepping on the rtc chip's time or something like that.

This site seemed to have the magic bullet for turning fake hwclock off, a beautiful single command which somehow alters all the rc.d files that had time setting stuff: http://forum.openmediavault.org/index.php/Thread/8770-RPi-2-RTC-module-from-unruly-Stepchild-to-Wunderkind/?pageNo=3
Specifically:
update-rc.d -f hwclock.sh remove

Unfortunately, after a few tests that seemed to show that the RTC was working, it stopped working. At first it looked like some tests that I had donewith an alternate power supply for the Pi might have damaged something, however a brand new sunfounder RTC continued to behave the same way. Upon reboot, the time would be set to 9:00 Dec 31, 1969 (upon reflection, this likely to be just midnight Jan 1 1970 GMT as viewed from EST although that doesn't quite add up right it should be 4 hours off not three), and attempting to read the hardware clock manually after a reboot resulted in the message "The hardware clock register contain values that are either invalid (e.g. 50th day of month) or beyond the range we can handle (e.g. Year 2095)."

A review of the messages file in /var/log seems to show that the chip is being registered as the hardware clock during bootup without any problems. /dev contains a device rtc0 with a simlink from /dev/rtc to /dev/rtc0.

A google search for the date 12/31/1969 shows a few people experiencing a similar problem on a variety of platforms with a variety of RTC chips.

A google search for the register message produces several other hits, one of which looks promising:

https://www.raspberrypi.org/forums/viewtopic.php?p=690492

Some suggestions that seem good that I haven't done yet are to turn off ntp:
update-rc.d ntp disable
fix /lib/udev/hwclock-set according to this link: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=16218&start=25
Also look for marcus15's post near the bottom of this page: https://www.raspberrypi.org/forums/viewtopic.php?p=690492

Furthermore, the same genius who began figuring things out in the above threads, marcus15, has worked through how to set things up for the Jessie distribution of Raspbian (which is what I have, so this applies in particular):
https://www.raspberrypi.org/forums/viewtopic.php?p=692662#p692662

The next to last entry on this page, by pemst, covers a lot of the same steps listed in marcus15's answer with some slight variations in technique: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=16218&start=100

Following the instructions in marcus15's and pemst's posts solved the problemThe problem seems to stem from a timing problem in the original configuration files in Raspbian, in that the usual setting in the hwclock.txt file to read the time from the hardware clock on boot is not being called before some code that decides that the time hasn't been read from the hardware clock and then writes crap to the RTC. The solution, aside from turning off fakehwclock and ntp, is to create a new service that reads the hwclock and then enable that service because apparently services are set up earlier in the boot sequence. Cutting and pasting from the forum threads above:

basic setup: Edit /boot/config.txt to include the following (notice unusual setup of i2c baud rate which I haven't seen anywhere else but which looks like a useful thing):
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231
dtparam=i2c_baudrate=400000
Next create a service script named hwcock-start.service in /lib/systemd/system by copying hwclock-save.service and editing it to look like this. Note that the call to hwclock is more fancy that normal, with the -D option to print diagnostic to the log files in the event of a problem and the --hctosys option to use the local time zone.:
[Unit]
Description=Synchronize Hardware Clock to System Clock
DefaultDependencies=no
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/sbin/hwclock -D --hctosys

[Install]
WantedBy=graphical.target multi-user.target
Then execute the commands to enable the new service. NTP off is shown below also for good measure.
sudo systemctl daemon-reload
sudo systemctl enable hwclock-start
sudo systemctl disable ntp
Then set the system time and save it to rtc0 and on the next boot the time is read correctly from the RTC.
sudo date -s "MM/DD/YYYY hh:mm"
sudo hwclock -w -f /dev/rtc0

How to root android phone:


iPhone links:

Some apps for rooting: Towelroot, Kingoroot, and others. All-important unrooting also discussed:

http://www.digitaltrends.com/mobile/how-to-root-android/3/
http://www.digitaltrends.com/mobile/how-to-root-android/4/

From the google search 'how to root android'

A great article that oddly breaks down rooting by phone brand:

http://m.androidcentral.com/root


Friday, October 14, 2016

Raspberry Pi 3 root password

It's embarrassing that I even had to look this up, but when I did, I learned: 1) the first rule of Raspberry Pi 3 root password is you do not use a password for root, you just sudo su. 2) This is the same question from a newbie which has answer 1 in it, but then disintegrates into a hilarious neckbeard war about shell security from which many useful things can actually be learned: https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=48293

Sunday, October 2, 2016

Lunar Ice Cube Labview

Here is the memory dump from working on the Lunar Ice Cube Labview task, under a search-engine-immune title.

The biggest challenge was figuring out how to import the program and its instrument drivers into newer versions of Labview. The second biggest challenge was figuring out how to make an executable. The original code was written in Labview 8.6. I had access to a copy of Labview 2013 that could build executables as well as a copy of Labview 2016 that could build executables.

The methodology for upgrading from 8.6 turned out to be the same for 2013 and 2016: Copy the files directory over to the machine, then open the newer version of Labview and click on the big "Open Existing" button on the splash screen, find the 8.6 project file and open it. Simple enough. This produced an explorer tree view showing the top-level VI, dependencies, and build specifications.

The problem was in getting the dependencies all worked out.

It turns out that none of the original code used IVI and other stuff that was like "drivers" in the Windows sense. The "drivers" for the three instruments in the code were all subvis that were


From trying to get the instrument drivers updated/installed:

http://forums.ni.com/t5/LabVIEW/How-do-I-install-instrument-drivers-contained-in-LLB-into/td-p/784524/page/2

How to build an installer:

https://zone.ni.com/reference/en-XX/help/371361J-01/lvhowto/build_installer/

Coercing a VISA resource into a string:

https://forums.ni.com/t5/LabVIEW/How-do-I-convert-visa-resource-name-into-string/td-p/1328547







python links

how to declare an array in Python:

stackoverflow.com/questions/1514553/how-to-declare-an-array-in-python

Python Tkinter Entry:

http://www.tutorialspoint.com/python/tk_entry.htm

https://www.google.com/search?rlz=1CDGOYI_enUS705US706&hl=en-US&ei=cUvDV6-VEYHxmAGUjZHwDA&q=tkinter+entry+delete&oq=tkinter+entry+delete&gs_l=mobile-gws-serp.3..0l2j0i22i30k1l2.157178.160617.0.164570.12.12.0.0.0.0.203.1628.2j9j1.12.0....0...1c.1.64.mobile-gws-serp..2.10.1226...41j0i67k1.rfFQ39E3pEw

https://www.google.com/search?rlz=1CDGOYI_enUS705US706&hl=en-US&ei=9knDV-C2C4WDmQG4u71I&q=tkinter+label+change+text&oq=tkinter+label+&gs_l=mobile-gws-serp.1.3.41j0l2j0i67k1j0.266888.268435.0.271509.9.9.0.0.0.0.186.1150.0j9.9.0....0...1c.1.64.mobile-gws-serp..1.8.964...0i22i30k1.-TB5bJ5JnyM

https://www.google.com/search?rlz=1CDGOYI_enUS705US706&hl=en-US&ei=BkvDV6OqFYHpmQHx5JiIDg&q=tkinter+label+insert&oq=tkinter+label+inser&gs_l=mobile-gws-serp.1.0.0i22i30k1l5.26730.31597.0.32720.16.16.0.0.0.0.186.2149.2j14.16.0....0...1c.1.64.mobile-gws-serp..5.11.1534...0j41j0i67k1.69sTuNiRUEQ


https://www.google.com/search?q=tkinter+label+configure&rlz=1CDGOYI_enUS705US706&oq=tkinter+label+con&aqs=chrome.1.69i57j0l3.14910j0j8&hl=en-US&sourceid=chrome-mobile&ie=UTF-8



Python strip with \n:

http://stackoverflow.com/questions/9347419/python-strip-with-n


Find app's current directory:

http://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory







Saturday, October 1, 2016

New prescription:


Here is the bifocal interior prescription that had both the top and bottom too close


Here is the new bifocal prescription; distance is fine, bottom is not quite strong enough:

SPH CYL AXIS ADD
-2.25 -1.25 179 1.00
-1.00 -1.25 162 1.00

sept lists 1

222 Ready to Evolve 9/7/2016:

-- Evolve Ekans (72/50) **
-- Evolve Nidorina into Nido Queen (100/100)
-- Evolve Meowth (59/50)*
-- Evolve Weepinbell (121/100+25)****
-- Evolve Gloom (100/100+25)
-- Evolve another Exeggcutor 69/50)
-- Evolve another Nido King (112/100+25)

Bonus evolutions:

-- Evolve Krabby (108/50)*
-- Evolve another Slowbro (47/50)
-- Make another Metapod
-- Make another Kakuna and evolve it
-- Make some Pidgeodos and evolve them

Long term evolution goals:

-- Evolve Jigglypuff (37/50)
-- Evolve Vulpix (31/50)
-- Evolve Doduo (21/50)
-- Evolve Pikachu (19/50)


--- Evolve Ivysaur (57/100)
-- Evolve Kadabra (54/100)
-- Evolve Haunter (31/100)
-- Evolve Wartortoise (30/100)
-- Evolve Polywhorl (16/100)
-- Evolve Magnemite (34/100)
-- Evolve Rhyhorn (22/50)
-- Evolve another Ponyta (11/50)
-- Evolve Charmander (7/25)

Do NOT make another Gloom
Do NOT make another Nidorina
Do NOT make another Nidorino
Do NOT make another Kadabra
Do NOT make another Weepinbell

Completed evolutions:

Staryu
Eevee
Goldeen
Geodude
BULBASAUR
Make 1 more Golbat
Make 1 more Venomoth
Make 1 Metapod and then evolve it
Make a couple of Kakunas and evolve them
Power up a Spearow and then evolve it
Evolve Psyduck!!!
Evolve Horsea (Found wild Seadra)


Evolution Plan 160907

-- 01Ekans454*a -- 3 PU -- Evolve
-- 02Meowth426*ha -- 4 PU -- Evolve
-- 03Bellsprout627*ad -- 3 PU -- Evolve -- 3 PU -- Evolve
-- 04Eevee606*a --10 PU -- Rainer -- Evolve
-- 05Eevee623a -- 5 PU -- Sparky -- Evolve
-- 06Eevee595a -- 5PU -- Pyro Evolve
-- 07Exeggcute640*ha -- 8 PU -- Evolve
-- 08Oddish645h -- 4 PU -- Evolve
-- 09BoyNidoran468 -- 5 PU -- Evolve
-- Krabby426 -- 4 PU -- Evolve
-- Caterpie242* -- 1 PU -- Evolve 1 PU -- Evolve
-- Krabby355* -- Evolve
-- Ratata324* -- Evolve
-- Ratata318* -- Evolve
-- Paras507*hd -- Evolve

-- 02Nidorina600 -- 2 PU -- Evolve
-- Evolve another Slowbro (47/50)
-- Make another Metapod
-- Make another Kakuna and evolve it
-- Make some Pidgeodos and evolve them



Evolution Results 160907

-- 01Ekans454*a -- 3 PU -- Evolved wrong one? -- Arbok984*.a
-- 02Meowth426*ha -- Persian1039*ha
-- 03Bellsprout627*ad -- 3 PU -- Evolve -- 3 PU -- Victreebell1652.d
-- 04Eevee606*a --10 PU -- Rainer -- Pyro1653*a
-- 07Exeggcute640*ha -- 8 PU -- Exeggutor1942*ha





3d print tweaks 09/13/2016:

-- 11/64" holes
-- .25" stair out of back of base (really, pretty much the whole roof)
-- cable tie point in center of front
-- Side cable thickness .3"!
-- knock .1" off of width of back shell
-- Deepen NASA logo





000 Friday impossible goals 160916

>-- Kits to Bonnie
>-- Work on Labview
>-- 10AM Max meeting
>-- Call Budget
>-- Fix, resubmit and approve test plug schematics
>-- Submit first unit fab WOA
>-- Pay bills
-- Work on T 's phone

Home:
>-- Make pdfs for fab WOA (CAN'T DO AT HOME, DID MONDAY)
-- Write up iMustang test results
>-- Create Pi panel new drawing
-- Submit rev C old panel drawing
-- rewrite GUI to single file
-- New features for GUI: file config, connector mapping, better Abort, stay running, manual mode ADDSIG, manual probing, correct legacy isolation test, don't do stupid continuities for nonlegacy, fix doubling of number of measurements for continuities.





Sep 21 2016 W Goals:

>-- Visit Bonnie to look at the boards
>-- Look up missing DLL for LIC PDU
>-- Finish BML journal (THURS MORN)
>-- Update the week's journal
>-- Get more cat food for Poni
>-- Get data and phone cards for Lisa
>-- Move blue laundry to drier, start white laundry (THURS MORN)

N2H:

-- Upload new ARM software image to TDMS
-- Prepare v4 Python image and upload it to TDMS
-- Begin working on the new GUI
>-- Order my Thing
-- Close Safari and Chrome tabs on iPhone
-- Order a keyboard bag off of Amazon, plus some velcro, plus a 12-inch micro usb cable

As If:

-- Try out external display for Pi
-- Begin prepping a scraps stop
-- Put mower away

030:190





Sep 23 2016 F

>-- Sort down box from car
X-- Refill water bottle (LEFT AT HOME)
-- Do all the N2H from last night
>-- Hang up the socks
>-- Shower
-- Move stuff off of new phone
>-- Email Nicole about inspections today

Yesterday: Lisa took Nina to Open Gym and found Kendall there with her kids. They went to the playground but Nina had jelly all over her and there were yellow jackets. Lisa got Nina cleaned up and got her changed for ballet and went directly there.

Weekend options:

Sat:
-- Ice skating
-- Riverfest
-- Bonfire

Sun:
--3pm river hill children's concert

GSE Cables Meeting w/Max
Gary Juan doing box-to-box
-- Needs an ICD, will produce the drawings

board to board
to be built by Tracy Young
Have Ken do the design and coordination
































Links for ESD Conductive paint

http://www.cybershieldinc.com/conductive-shielding-paint/

http://www.ppgindustrialcoatings.com/Technologies-Products/Conductive-Coating/ESD.aspx