Showing posts with label rancorbeast. Show all posts
Showing posts with label rancorbeast. Show all posts

Tuesday, February 1, 2011

Iteration 2, Tues

A long morning retrospective is an unintuitive event to schedule, but sometimes a good idea, and my pair and I still got a nice chunk of work done before lunch. As part of the learning process, our team has been leveling up to the point where we self-start our internal processes without trainer (i.e. boss) supervision.

The ruby gem roo imports data from spreadsheets into wherever you want to send it- usually a database of your own. Some experimentation with it today revealed two important things:

  1. roo 1.9.3 does not appear to install its own dependencies. When using roo, write a script to take care of that.
    Dependencies of roo:
    bones (3.6.2)
    builder (3.0.0)
    google-spreadsheet-ruby (0.1.2)
    little-plugger (1.1.2)
    loquacious (1.7.0)
    nokogiri (1.4.4)
    oauth (0.4.4)
    rake (0.8.7)
    ruby-ole (1.2.11.1)
    rubyzip (0.9.4)
    spreadsheet (0.6.5.1)
  2. roo can import data from .xls or .xlsx and parse it into the variable types that we need.
An alternative to roo is Apache POI, which is written in Java and thus will interface with our system through fewer layers than roo would have to. A third alternative which we may or may not explore is to use the java bindings provided by OpenOffice. 

When it comes time to use these with parts of the real dataset, we may expedite redumping the .xls by dumping csv and checking md5sums to validate the cache. i.e, find /path/to/spreadsheets -name '*.xls' |md5sum > checksums.txt, and then use a diff to compare to the last run. 

To open any file in mac terminal, open filename.extension will accomplish the task. 

Quote: "learning what you're dong rather than how to do something" (in relation to how to find and adjust paths of inputs and outputs rather than how to do so for a specific program)

In connection with roo, I spent some time getting several haphazard installs of rvm into a more understandable state, setting a default ruby (1.8.6 because of the OSX support) and examining the different places where gems can be installed to, and the possibility of automagically-generated symlinks from all installed rubies to the system ruby's gem folder. However, it seems too complex for our current problem, and perhaps unwise in general if versions of gems become a relevant concern. 

IntelliJ library dependency filepath complexities are deceptively simple, and some of the error messages are verbose but unilluminating because in this case the desired classpath seems to match the existing classpath but the error persists, which leads me to believe that the error is symptomatic of a different problem. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

Thursday, January 13, 2011

Why static methods and variables complicate everything

My most useful sources for this were:
rancorbeast
blog by misko
blog by jagregory

Unit testing depends on being able to set the variables which part of your program uses, and then see whether the part of your program which you're testing uses them correctly. But if what you're testing requires manipulating or reading static variables, the test cannot be written efficiently, because the static variables are static and hold their value for the entire run of the program. Because having static variables makes unit testing difficult or impossible, it is less likely that a programmer who uses static variables will use unit tests. This implies that their test may break without the programmer knowing about it, and that the programmer might not follow other best practices, since they don't follow the one about testing.

Static methods make code harder to change, because other parts of the code may rely on the static methods being static. This coupling makes your design difficult to change. Having a design that is easy to change (refactor) is good, because then you can refactor it to make it better. Static methods imply the presence or incoming presence of bad design because the programmer has not given thought to making the program easy to add functionality to, and to refactor. If refactoring and/or added functionality is tried in the future, the code may begin to accumulate workarounds to the static methods. This will make the code longer and more complicated than it needs to be.

Static variables make thread safety almost impossible to achieve because they are a shared state, which is almost always bad. Static variables, and anything they access, can be accessed concurrently by different threads unless you take pains to synchronize access to them. While you can guard them, if you have too many of them your design is harder to validate because the locking will be more complicated. If there are enough of them, then performance will suffer because of different parts of the program waiting for other parts of it to wait for locking to resolve.

Friday, January 7, 2011

Professionalism

I fell asleep at midnight over my homework, woke up at 4am with more bug bites. Finished and turned in the homework. Searched "professionalism" on twitter.

Some traits of professionalism that I think I've identified:
  • Keep a straight face when the client says unfortunate things. Keep a filter on your verbalized thoughts. 
  • Plausible deniability
  • Create a paper trail for everything
  • Stick to "best practices" i.e. don't do the probably-not-bad but also not-what-you're-supposed-to-do things... I think the equivalent would be a professional painter always putting edging tape around the windows even though he thinks he could do the job perfectly without it.
  • Don't say frivolous or entertaining things; always think through something before it leaves your mouth and have logic to back it up. I.e. never say anything that makes you sound like you're being flip/don't know what you're talking about.
  • Taking pride in your work (I like this one!)
  • Basically act like the client is crazy and can't be communicated with in a normal interpersonal way without risking (lawsuit? some kind of consequences) i.e. do not attempt to attain understanding, just go by the rulebook...?
  • When when things go wrong, don't make excuses; you should have not let it happen. Explain what happened/why you don't know/why you can't do it, and describe how you plan to fix it, if it can be fixed, or how you plan to figure out if it can be fixed, if it seems like there's a way. If it's irrecoverable, accept responsibility and then IMMEDIATELY STOP TALKING i.e. don't make excuses or ramble on.
  • "Professionalism is the adherence to a set of values comprising statutory professional obligations, formally agreed codes of conduct, and the informal expectations of patients and colleagues." http://www.google.com/search?hl=en&defl=en&q=define:professionalism&sa=X&ei=tZ8nTeKOKpGIrAej6NimDA&ved=0CB8QkAE

As an example, I'm pretty sure that this entire post is unprofessional, because I haven't dressed it up in slippery language? Actually I'm not sure why this post is unprofessional, but I'm pretty sure that it is.

Reasons that I care about professionalism:
  • My trainer thinks that it's an important skill that I lack, and I agree
  • It's good to know how to seem professional because it gets you credibility, clients, and money
Reasons that I don't think much of professionalism:
  • I think it's another way of saying that you're adhering to internal/external industry standards but I don't think the standards are ever defined for my industry in a way which I can study and use. (On second thought, they probably are, and I should go find them.)
This is the google query which is my starting point for chasing an answer for the above question http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=professionalism+in+programming+consulting

A professional never:
  • uses offensive language to or near the client
  • cuts corners (in visible/important places?)
  • makes excuses (need more explanation here)
  • uses capslocks
Article on professionalism in consulting: http://davidmaister.com/articles/1/3/
This article is long but I've read all of it and frankly I think that it's the thing that has most increase my understanding of professionalism, ever. I think I'll reread it in the morning.

Friday, December 17, 2010

Ruby 1.8 multithreading: fail

Ruby 1.8 "multithreading" is not real multithreading. It ends up that the entire VM blocks on any I/O. Well, hell.

Discovered (and probably soon solved) by rancorbeast.

Other guy's ideas: http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/
(Just fixes the performance issue, not the fact that they don't provide useful concurrency.)

Saturday, December 4, 2010

Euler 13

Today I learned about Ruby inject, otherwise known as a left fold. http://en.wikipedia.org/wiki/Fold_(higher-order_function)

nums.inject &:'+'
&: takes the ... and calls to proc which is a callable object. with the provided arguments... the result is that you can take a method name on one of the array objects (like +) and ...do it.
1.send '+', 2

Assuming that you've assigned nums[] to hold the data you're dealing with, then puts nums.inject(0) {|a, b| a + b} will get you the answer 9and then you just take the first ten digits)

A much less elegant way to do this is
sum = 0
for i in 0..nums.size-1
sum = sum + nums[i]
end
puts sum

Once you understand what the notation does, it's an elegant way of doing it. But the uneducated will be extremely confused. There is all sorts of evil to it.

Wednesday, December 1, 2010

Southwest database fail

Linda: So it turns out that the reason that I've been locked out of my account is that when I booked your ticket their database subbed your birthday for mine, therefore no validation with my birthday would work. Database flaw, they have one. Also, it seems likely that all of my password reset emails are in your spambox somewhere.
(1:29:32 PM) ce: oh, that's ugly :(
(1:29:54 PM) ce: at least it's fixed now?
(1:30:59 PM) Linda: No, it's not. The database also subbed in middle name and gender and I can't fix them from this end for some reason. Unless I get this fixed, there's no way I can get through security again if booking travel through my SW account.
(1:31:03 PM) Linda: Sigh.
(1:31:27 PM) ce: that's fucking terrible.

When I booked a trip for him using my account (and the rewards and vouchers in my account) the database must have inserted his information instead of mine in the fields of: middle name, birthday, gender, and email address. And there's no way to fix it from the consumer side of the webpage.

However, the good news is that, thanks to someone on the help line, I have a password to my account now. The bad news is that I can't book travel yet, unless I want travel booked for a male with my first and last names, but Lance's middle name. ...useless, no? So, back to the phone help line.

Edit: Called customer service 214-932-0333. After some initial confusion on the part of the agent, and then a request that I fax her my drivers license (my reply: "I don't have a fax machine... can I email you a picture?"), she simply changed my data to correct data which I supplied verbally. A quick refresh of my account page shows that she changed my middle name and my gender, and although for some reason my account won't show me what she changed my birthday to, I have no reason to doubt that she did that accurately too.

So, where are the security flaws here?
  • Initial database flaw- replacing good information with bad. How far does this extend?
  • In password reset attempts, sometimes two attempts with the same data had different results, i.e. either "bad data, please retry" or "email sent, please click link"
  • Lack of ability to change your own birthday/gender on the website might be an attempt at security? Or just a bug. Inability to see my own birthday in my account info is definitely a bug, because if I can't see it, it might be wrong and I would have no way of knowing.
  • Ability for customer service rep to change account info without evidence other than my voice (and confirmation data that I provided, such as address, name, birthday... all things that someone could find out about me).
By the way... the way to add a Southwest LUV voucher to your account is here: https://www.southwest.com/flight/travel-funds-results.html (for the next time that I forget and get frustrated)

Wednesday, November 24, 2010

nothing is installing properly

I will deal with this in just a minute.

Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-25-generic-pae
Bus error
Bus error
rm: cannot remove `/tmp/mkinitramfs_2xhLIe/lib/modules/2.6.32-25-generic-pae/modules.*map': No such file or directory
Segmentation fault
update-initramfs: failed for /boot/initrd.img-2.6.32-25-generic-pae
dpkg: error processing initramfs-tools (--configure):
subprocess installed post-installation script returned error exit status 1
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Errors were encountered while processing:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Edit: It turns out that I'd tried to switch from kernel 2.6.32-24-generic to 2.6.32-26-generic-pae but didn't do it completely. Fixing that (yay aptitude!) fixed the problem. Also, remember to update GRUB.

Knowing that would've made cs450 a lot more pleasant. Damn.

Friday, November 12, 2010

Euler project 11..n

So, Euler problems 1-10 have increased my knowledge of ruby, python, and pain. It's been fun, and took longer than I wish it had. Obviously it's time to start on #11.

11. http://pastie.org/1306770 This could use some refactoring, but it works. It took me a bit to figure out, but I learned a lot, and didn't steal anyone's code. Although rancor did tell me that string.split existed.

16. http://pastie.org/1342335 This one was disturbingly easy and I don't know why. Maybe I'm getting better at Ruby. Or their ranking system is off. Something. Yes, I skipped 12-15 so I could do this one quickly and feel happy.

20. http://pastie.org/1342458 This one was very similar to 16. Doing one makes the other easy.

13. http://pastie.org/1348523 my brute-force solution.

14. http://pastie.org/1348526 my brute-force solution. http://pastebin.com/JVDVBL0b rancorbeast's elegantish solution.

Thursday, November 4, 2010

Euler Project

I'm doing problems from the Euler Project just now. My code is hideously embarrassing, but it's all my own and I'm kinda proud that I can write the stuff at all, considering that less than a month ago I might've looked at the problems and despaired, or at least made headway much more slowly.

My profile: http://projecteuler.net/profile/geeklinda.png I wish it said which specific problems I've solved...
  1. http://pastie.org/1273530 An alternate and very elegant solution from rancorbeast ((1..(1000 - 1)).reject { |i| i % 5 != 0 && i % 3 != 0 }).inject(0) {|a, b| a + b}
  2. http://pastie.org/1273527
  3. http://pastie.org/1273740
  4. http://pastie.org/1285750
  5. http://pastie.org/1290420 Code blatantly stolen from 17 Sep 2005 03:20 am post by Olath at http://projecteuler.net/index.php?section=forum&id=5 (can't access if you haven't already solved the problem) ... yes there is a discrepancy here. :)
  6. http://pastie.org/1285746
  7. http://pastie.org/1293957 (stolen from forums after getting answer)
  8. http://pastie.org/1285739
  9. http://pastie.org/1293953 (All mine. I'm proud of it. It runs pretty quickly. finding an answer took me several tries for some reason.)
    rancorbeast beat me by miles with the oneliner below.
    (1..500).each {|i| (i..500).each {|j| if i + j + Math.sqrt(i ** 2 + j ** 2) == 1000; print i * j * Math.sqrt(i ** 2 + j ** 2); end } }
  10. solved in python.
Euler 11..n will be in a new post.

Wednesday, October 27, 2010

everything all at once: firesheep, ettercap, Sahara, RAM

I'm educating myself through observation. Check out the comments.
http://github.com/codebutler/firesheep/pull/31
Just to note: I don't actually know what these guys are doing. Gotta read more code first. It would help if I were familiar with github.com already.
http://github.com/codebutler/firesheep/issuesearch?state=open&q=linux#issue/31
However, several people have gotten it working on *nix. So... win?

Ettercap: has a bit of a learning curve, but does what firesheep does and is for *nix
http://ettercap.sourceforge.net/

Note: I was playing with VirtualBox and the Sahara VM, but this is more interesting. I still read the Sahara:Eden listserv emails, and they still don't make sense, so I'm postponing that project.

Other issue:
My ubuntu kernel doesn't support more than 4gb of RAM. I have 8. Therefore, new kernel time! I'm learning how to use aptitude. ...the hard way.
http://stackoverflow.com/questions/423540/how-to-see-packages-installed-on-a-given-date-using-aptitude
http://ubuntuforums.org/showthread.php?t=243528

Monday, October 25, 2010

GRUB is all better

By the way, I finally got my grub file working, with some initial help from rancorbeast. I used a Ubuntu 10.04 Server disc that I picked up at GHC. My current grub (with most of the comments edited out for ease of reading):

default 0
timeout 20
# hiddenmenu

title Ubuntu 10.04
uuid 97da0f78-1a67-4dfa-9239-70cf44363b26
kernel /boot/vmlinuz-2.6.32-25-generic root=UUID=97da0f78-1a67-4dfa-9239-70cf44363b26 ro
initrd /boot/initrd.img-2.6.32-25-generic
quiet

title Recovery mode (Ubuntu 10.04)
uuid 97da0f78-1a67-4dfa-9239-70cf44363b26
kernel /boot/vmlinuz-2.6.32-25-generic root=UUID=97da0f78-1a67-4dfa-9239-70cf44363b26 ro single
initrd /boot/initrd.img-2.6.32-25-generic

title Windows 7
root (hd0,0)
savedefault
makeactive
chainloader +1

----

As you can see, I'm not using a splash page, and I have Ubuntu and Windows 7 dual-booting. My grub menu is not hidden but if it were I would have a nice long 20-second delay so it wouldn't catch me by surprise on its way by.

I have a somewhat haphazardly partitioned hard drive; originally the machine (Thinkpad T400 and I love it) came with Vista. I installed Ubuntu 10.04, then did a clean install of Windows 7 over Vista. Naturally this trashed my grub menu and I had to go get it back, etc., see above. Of course what update-grub created had duplicates of everything, a link to a nonfunctional grub2 loader and a memtest, and no Windows. So I fiddled, and now it's all better. -shrug- Not complicated, but a good thing to play with.

Bandcamp

Bandcamp has an awesome application puzzle. (Which was featured on boingboing recently.) I solved it, with a few hints "try irb" and "how about using cat?" from rancorbeast, who didn't bother solving it since he's happily employed.

I'm not actually applying to work for them. I would really like to work for the company that's interviewing me (again) later this week. But puzzles are there to be solved. If my current endeavor falls through, maybe I'll give them another look.

I won't post the solution, since that's bad form. But let's just say that it was pretty easy, but still worth bragging about. If you're interested, this is the starting page: http://bandcamp.com/jobs

Wednesday, October 13, 2010

New OS time

My intelligent but not a CS geek roommate updated her Ubuntu partition, and then happened to reboot. And... after login, she gets a completely blank screen. After a while, the default wallpaper loads. Wait as long as you like; nothing else happens.

I booted into a root shell and poked around a bit, but didn't make any definitive change to the problem. I gave her an openSUSE cd that I picked up at GHC, and last I saw her she was backing up a couple files preparatory to a full wipe and install.

Because a couple days ago, a virus hosed her Windows partition (I guess McAfee isn't perfect, lol) and (despite rancorbeast, Ben, and I fiddling with it- and replacing corrupted kernel32 and setup32 etc with uncorrupted local versions and hopefully-functional downloaded versions) she gave up on it.

Well, hell.

I, on the other hand, this morning acquired a (MSDN legal! ftw!) version and key of Windows 7 and I plan to burn it to disc and keep it handy for my inevitable needs. Maybe I'll make a VM on Ubuntu and load it there.

My Ubuntu partition (10.04) is behaving well, and I don't plan to update to 10.10 for a while yet, since this is the machine that I use all the time and I hear that there are some fun bugs that I don't really want to play with at the moment.

Monday, October 11, 2010

Legalese

Format legal code in LaTeX, run all modifications through github. Rancorbeast's idea. Implementation...

Sunday, October 3, 2010

Clear vs *NIX round 2

All of the below is done with the invaluable help of rancorbeast.

http://git.kernel.org/?p=linux/kernel/git/shemminger/beceem.git;a=blob;f=drivers/staging/bcm/TODO;h=366634be5fe1d4cf2065f57d480230dbc1a754d9;hb=HEAD
The above is a to-do list for what claims to be a driver for the chipset in the Clear dongle. But I don't know what it would show up as, and I don't know how you would build it.


So basically, Sprint released some driver code, and this is a cleaned-up pull of that? It was part of the Broadcom driver source...

Right now trying to get a clone of it and compile.

Monday, September 27, 2010

inflight wifi: some network analysis

I am on a plane with wifi. Naturally, I'm trying to explore the network. Here's some raw data. Sorry for the massiveness of it.

Internet provided (for $5/flight) by:
http://www.gogoinflight.com/gogo/splash.do
Screenshot of speedtest: http://picasaweb.google.com/wordymusic/InAirWifi#5521697470990105234

Ideas on things to try (I didn't get to all of them.)
  • traceroute to various places, try to figure out if you're behind some sort of transparent proxy, mainly by trying encrypted connections and odd ports.
  • nmap the entire subnet to see if there's any other interesting equipment, do indepth probe scans on anything interesting.
  • packet sniff the entire plane with kismet.
  • see if it asks you to reauth if you steal somebody else's ip address.
  • try arp poisoning to make sure you get it
Fast pinger version 2.20
(c) Wouter Dhondt (http://www.kwakkelflap.com)
Pinging 12.130.117.106 with 32 bytes of data every 15 ms:
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
12.130.117.106: request timed out
Ping statistics for 12.130.117.106:
Packets: Sent = 10, Received = 0, Lost = 10 (100% loss)
Approximate round trip times in milli-seconds:
Minimum = 0.0 ms, Maximum = 0.0 ms, Average = 0.0 ms
12.130.117.106 is from United States(US) in region North America


TraceRoute to 12.130.117.106

Hop(ms)(ms)(ms)IP AddressHost name
148463572.249.128.105-
2222743206.123.64.22-
3255945216.52.189.9border4.te4-4.colo4dallas-5.ext1.dal.pnap.net
4212227216.52.191.33core2.tge5-1-bbnet1.ext1.dal.pnap.net
510131865.208.15.2290.ge-0-1-0.gw3.dfw13.alter.net
69179152.63.101.530.ge-3-0-0.xl3.dfw7.alter.net
7866152.63.96.450.ae3.br1.dfw13.alter.net
811169192.205.36.213-
938303812.122.195.238cr1.dlstx.ip.att.net
1039352912.122.28.86cr2.kc9mo.ip.att.net
1134644412.122.28.90cr2.sl9mo.ip.att.net
1237385212.122.2.21cr2.cgcil.ip.att.net
1366383012.123.7.249cr84.cgcil.ip.att.net
1490494512.122.132.161gar8.cgcil.ip.att.net
1562717012.122.254.18mdf001c7613r0001-gig-10-1.chi2.attens.net
1634363212.130.96.174mdf001c7613r0004-gig-12-1.chi2.attens.net
1746584912.130.100.142-
1860695512.130.115.249-
19Timed outTimed outTimed out-
20Timed outTimed outTimed out-
21Timed outTimed outTimed out-

Your IP Address Is: 12.13017.106

Possible Proxy Detected: 1.0 10.240.20.13:8080 (squid/2.6.STABLE12)


geeklinda@cyberpunk-geeklinda:~$ traceroute 12.130.117.106
traceroute to 12.130.117.106 (12.130.117.106), 30 hops max, 60 byte packets
1 172.19.131.2 (172.19.131.2) 1.129 ms 1.162 ms 1.433 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
geeklinda@cyberpunk-geeklinda:~$ nmap 12.130.117.106
Starting Nmap 5.00 ( http://nmap.org ) at 2010-09-27 16:22 CDT
Interesting ports on 12.130.117.106:
Not shown: 997 filtered ports
PORT STATE SERVICE
80/tcp open http
82/tcp open xfer
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 7.38 seconds
geeklinda@cyberpunk-geeklinda:~$ nmap 12.130.117.106 -p0-5000
Starting Nmap 5.00 ( http://nmap.org ) at 2010-09-27 16:23 CDT
Interesting ports on 12.130.117.106:
Not shown: 5000 filtered ports
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 15.70 seconds

Your IP address is:


Overwhelmed with spam? Protect your contact forms
Your Proxy IP:12.130.117.106
Browser : Chrome 6.0.472.53
OS : Ubuntu Linux 10.04




DelayHost Delay ( ms )Success Rate
Packet Lossminavgmax
1
svcacis-04-ge30.conxion.net
206.204.4.1
0.2740.3270.378 3 /3100%
2
ge2-1-brc2-sjca.us.conxion.net
206.204.250.145
0.3060.3310.345 3 /3100%
3
so-0-3-2-brj1-paca.us.conxion.net
206.204.250.25
1.2321.2351.239 3 /3100%
4
ge-6-9.car1.SanJose2.Level3.net
65.57.244.13
1.2641.2831.313 3 /3100%
5
ae-33-89.car3.SanJose1.Level3.net
4.68.18.133
2.1722.2852.395 3 /3100%
6
level3-gw.sffca.ip.att.net
192.205.33.81
4.1784.2214.257 3 /3100%
7
cr1.sffca.ip.att.net
12.122.137.18
54.24570.50587.754 3 /3100%
8
No name for this address
12.122.4.122
53.62553.77354.005 3 /3100%
9
No name for this address
12.123.7.109
53.02353.29053.507 3 /3100%
10
No name for this address
12.122.133.157
52.96753.01053.043 3 /3100%
11
mdf001c7613r0001-gig-10-1.chi2.attens.net
12.122.254.18
53.75753.81253.874 3 /3100%
12
mdf001c7613r0003-gig-10-1.chi2.attens.net
12.130.96.170
53.81453.87253.942 3 /3100%
13
No name for this address
12.130.100.142
53.65953.67553.706 3 /3100%
14
No name for this address
12.130.115.245
53.79153.79953.812 3 /3100%
15
NO RESPONSE
0.0000.0000.000 0 /30%
16
NO RESPONSE
0.0000.0000.000 0 /30%
17
NO RESPONSE
0.0000.0000.000 0 /30%
18
NO RESPONSE
0.0000.0000.000 0 /30%
19
NO RESPONSE
0.0000.0000.000 0 /30%
20
NO RESPONSE
0.0000.0000.000 0 /30%
Trace from



What I've learned: have a plan for analyzing a network! Don't just do it "on the fly" especially if you're only going to be in the air for two hours, and only allowed to have electronics on for ~half of that! (I spent some time googling... and installing...)