Thursday, November 8, 2012

How I Calculate a Proper Tip

I was just thinking about tipping while looking at a receipt just now, and decided to let the world in on how I come up with the appropriate amount (in this case at least).
I always tip 20%, because it's the upper end of what I've heard to be the spectrum 15-20% and it makes for relatively easy calculation.
My check was $14.41, divide by 10 (move decimal point left one space) to get 1.44 and multiply by 2 to get to 20%, I saw 1.44 was close to 1.5 so I just made it an even $3 which comes to a 20.8% tip.


Thursday, November 1, 2012

Arch Linux VPS and glibc upgrade issue

So I just got a VPS with Archx86_64 and had some trouble with the glibc upgrade (again), I've been following various guides and ran into a little hiccup with glibc that I haven't seen elsewhere, there were files owned by util-linux-ng in /lib, I just had to sync that package explicitly and it was removed and replaced util-linux and glibc installed fine :)
[root@lovejes ~]# find /lib -exec pacman -Qo -- {} +
error: cannot determine ownership of directory '/lib'
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by util-linux-ng 2.17.2-2
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by util-linux-ng 2.17.2-2
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by util-linux-ng 2.17.2-2
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by util-linux-ng 2.17.2-2
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
/lib/ is owned by glibc 2.16.0-99
[root@lovejes ~]# pacman -S util-linux-ng
resolving dependencies...
looking for inter-conflicts...
:: util-linux and util-linux-ng are in conflict. Remove util-linux-ng? [y/N] y

Tuesday, October 30, 2012 won't reliably resolve when pulling/pushing

It started a couple months ago, it was confusing at first, I thought maybe my remote address was screwed up, or I had the wrong public key on github... but it just seems really unreliable.  The message looks like this a lot of the time:
[nak@arch Guru]$ git pull origin development
ssh: Could not resolve hostname Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 Then I press up-arrow, enter... over and over again until I'm able to get a connection, and then it works fine...

I figured I'd write about this in case others are googling around, you're not alone, but I don't know the solution yet.  Maybe I'll do a wireshark session to see if I can dissect anything.

Until next time,
Eternally Confused,
Naked Proof~

Blog of confusion

This really seems to be a blog documenting my confusion, and then what proceeds from that confusion:
A lot of the time more confusion, or confusion disguised as revelation, and then maybe if I am lucky, true revelation.

Like my last post on coffeescript -cw, I'm not sure if there's still an issue with that anymore, did vim patch something? Was I really confused and blaming something that wasn't having problems? Eesh!

Wednesday, October 17, 2012

Coffee script `file removed` while using compile/watch switches with vim

I thought it was just my main Arch system, but I've recently been forced to use my clunky old laptop to develop and have found that there is a race condition in coffee-script when saving with vim on there too.

I fixed the problem with this simple patch (a hacky 100ms setTimeout to add a short pause), I was hoping the CPU on my laptop was slow enough that the logic would line up without the patch.  This was not the case.

Here's what I did since that patch link is now broken:

in I have this:

# Watch a source CoffeeScript file using ``, recompiling it every
# time the file is updated. May be used in combination with other options,
# such as `--lint` or `--print`.
watch = (source, base) ->

  prevStats = null
  compileTimeout = null

  watchErr = (e) ->
    if e.code is 'ENOENT'
      return if sources.indexOf(source) is -1
        vimTimeout = wait 100, ->
      catch e
        removeSource source, base, yes

    else throw e

ALSO: This blog entry seems to have a good suggestion, I may try it myself!

When I brought the issue up in the coffee-script IRC channel a few months ago, there were some very defensive people (person?) saying the problem wasn't with coffee-script and the -cw switch works fine with vim.

This has not been the case for me.

I hope this helps some people, because I don't think I'm the only one who's experiencing this, or will experience this.

Please let me know if this issue gets patched, I submitted a pull request, but I deleted it due to lack of response and the embarrassingly nasty little hack (although similar hacks are used throughout the compiler to deal with race conditions!).

Anyway, much love to coffee-script for now, good luck fellow hackers.

Friday, October 5, 2012

Rant to Self: Arduino Development of Haptic Compass on Arch Linux

Poni Halp Me
Yesterday I was able to get the arduino development environment setup on Arch Linux AND get the compass module talking to the arduino over I2C (yay pre-existing code).

A lot of the haptic compass projects I see are driving the vibrator motors directly from the digital pin on the arduino, naughty!

I'll post how I used a transistor to switch each motor, even though I haven't done it yet :-P

So now the hard part where I'm sort of flabbergasted at the moment.  I have 6 registers of data spilling out magnetic field strength data for 3 axis, oh yeah the module I have exposed the DRY (data ready) pin from the compass chip, so I altered the sparkfun code to update continuously when that pin is high... high ... heh.

Anyway. When the data is inspected as a signed integer, I seem to see values from -700 to 700 for each axis.  I'll probably have to do something called 'vector addition' heh made that up, maybe, but like... I know I can't directly add or subtract the vectors, x and y are on the same plane and z is sticking out, and it seems like the higher the number the more aligned to north the axis is, negative is when the axis is "pointing" south.

Also when an axis is pointing down towards the ground its a positive, when it's pointing towards the sky it's negative. Not too sure about this behavior yet.

I should really read the data sheet more in depth now. Until next time!

Tuesday, September 18, 2012

How to strip file extension in a bash shell script function

FILENAME=`echo $1 | sed -e 's/\..*//g'`
From a BASH function take the first command line argument and strip off the extension and then assign it to the variable FILENAME.

It's probably not the best way of doing it, but it's how it happened.  I couldn't find any one liners from the googles :'(

Post your better solution in the comments below!11111!!!!

This is the total function (in my bash.bashrc):

mk430 () {
  FILENAME=`echo $1 | sed -e 's/\..*//g'`
  msp430-gcc -mmcu=msp430f2274 -o $FILENAME.elf $1
for compiling MSP430 C files to elfs, there's probably a better alias too!

Sunday, September 9, 2012

MSP430 eZ430-RF2500 on Arch Linux

Hi, I didn't see much info on this particular model and Arch. So I'll log what I do here:

I plugged in the USB dongle with the breakout board attached, ran lsusb which showed this entry:

Bus 008 Device 004: ID 0451:f432 Texas Instruments, Inc. eZ430 Development Tool
So far so good. Now I need to install some stuff:
$ yaourt mspdebug-git
yaourt is a AUR package manager, you can do this manually by searching and then installing the package with makepkg.

The build fails: make: /bin/install: Command not found
I run these commands to make a soft-link to `which install`:
$ cd /bin
$ sudo ln -s /usr/bin/install install

then select Restart building mspdebug-git? [y/N] y

The build succeeds and the package installs.
I type...
$ sudo mspdebug rf2500
because shamwowzow, I'm a frolicking alien and it connects to the device and gives me a prompt, I see the availiable commands and enter:
(mspdebug) run
The light on the breakout board begins flashing, I plugin the other board and the green light turns on... signalling a wireless connection I suppose.
I used sudo because I guess my normal user doesn't have permission to do this kind of magic yet, probably have to add it to some group.
[EDIT]: $ sudo gpasswd -a uucp


I search AUR for mspgcc for a gcc toolchain or whatever, and it shows me a lot of stuff. I dunno what to do so I read this ubuntu guide for some ideas. Then I read this arch linux guide for another MSP430.  Seems promising. I search AUR for MSP430, seems like there's a package called `gcc-msp430`  I'll try that...
$ yaourt gcc-msp430
 I type `1-3` to install the 3 packages... I lazily don't edit the PKGBUILDs like a lazy arch user that's prone to blowing off his feet because of silly mistakes. Things compile, things install, things download and repeat, I type `y` and `n` seemingly arbitrarily to get through this maze of discrete choice towards getting code into some carefully crafted silicon hanging in it's bare PCB off the dongle at the front of my PC....

Wow. This takes a long time, I was running BOINC (like SETI for AIDS and malaria and protein folding) and turned it off so my CPU could focus on compiling all this MSP430 junk...

The next patch would create the file ld/emulparams/,
which already exists!  Assume -R? [n]
Uh oh, I'm just going to press enter and hope the god of good defaults saves me.

Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored
Uh oh, now its doing the same thing with `msp430.em`... I'm going to ctrl-c and try putting `y` instead...
I just ran `yaourt gcc-msp430` again, it's retrieving sources.... I dont think yaourt has a cache >.>

Ugh. That was a mistake.
Ok so I pressed `y` to make it assume -R (which means reversed or something, idk) and now it finally came back with:

make[4]: *** No rule to make target `emulparams/', needed by `emsp430.c'.  Stop.
make[4]: Leaving directory `/tmp/yaourt-tmp-nak/aur-mspgcc-binutils/src/binutils-2.21.1/ld'
make[3]: *** [all-recursive] Error 1
going to "restart building" again and try just pressing enter like I did the first time... I really don't know what I'm doing at this point, as if I ever did... wow didn't even come to that point.

Targets (1): mspgcc-binutils-20120406-1
Total Installed Size:   9.95 MiB
Proceed with installation? [Y/n]
(1/1) checking package integrity                                       [#######################################] 100%
(1/1) loading package files                                            [#######################################] 100%
(1/1) checking for file conflicts                                      [#######################################] 100%
error: failed to commit transaction (conflicting files)
mspgcc-binutils: /usr/bin/msp430-addr2line exists in filesystem
mspgcc-binutils: /usr/bin/msp430-ar exists in filesystem
with a ton more "exists in filesystem" messages, then quits saying no packages were upgraded. I don't know what's happening, I don't think it does either.
Well I guess I'll try and compile some LED blinking code from here and put it on there.

$ msp430-gcc -g -o led.elf led.c
led.c:1:26: fatal error: msp430x20x3.h: No such file or directory
compilation terminated.
Guess I need some headers... or something...
$ yaourt msp430-libc
Uhh ok its doing mspgcc-binutils again... pray for it.
Wow... I'm just not very good at yaourt, I've been installing crap I don't need by doing stuff like 1-3 ... I need to do a little cleaning after I'm done I think.
$yaourt msp430mcu
this says it installs the headers... getting closer

[nak@arch msp430]$ msp430-gcc -g -o led.elf led.c
/usr/bin/msp430-ld: cannot open linker script file memory.x: No such file or directory
collect2: ld returned 1 exit status
OKAY THIS IS THE -mmcu FOR THE eZ430-RF2500:
msp430-gcc -mmcu=msp430f2274 -o led.elf led.c
it output an elf without any errors, now to put it on the board...

$ sudo mspdebug rf2500
(mspdebug) erase
(mspdebug) prog led.elf
Writing  154 bytes at 8000 [section: .text]...
Writing   32 bytes at ffe0 [section: .vectors]...
Done, 186 bytes total
(mspdebug) run
Running. Press Ctrl+C to interrupt...

And the LED is blinking~
I'll created a compressed version of this sometime.

Monday, July 30, 2012

Rave-O-Lution 309 Manual in English

It was difficult to find this manual. I uploaded it a couple places

Wednesday, July 25, 2012

cgoban won't start!

Problem: cgoban can't find

Solution: Realize you're running DNS caching and the IP must have just recently changed!
  sudo pdnsd-ctl record delete
This is a very specific solution to my current setup, I just didn't know what was happening and thought maybe this hint would help someone else.

Thursday, May 31, 2012

I don't post here anymore

Do you know why?

It's because I have tumblr, twitter, G+,,, etc accounts

And I really haven't done many technical how to things lately (which is what I seem to be posting here now...)

I did purchase a humble bundle for the first time (spent $12 as to not hurt the linux pay average :) )

I'm installing Amnesia: The Dark Descent now, look at this beautiful picture:
awww yeah, I'm going to scare my memory blank.  I've played it before at my friends house a bit, but I think it would be better to be alone and in the dark with headphones :(

The bundle also includes a bunch of other cool games.

Anyway ttyl blogger.

Yeah... mfw arch linux:
I might just use windows XP for this >.<

1) You can't use the open sauce gfx drivers for amnesia, boo
2) SwordAndSourcery is 32 bit so... yeah I'm going to have to do the same dance with this as I did for serious sam... I don't think so at the moment...
3) Not going to mess with the other games on linux here, I'm just going to windoze it.

Sunday, March 25, 2012

Serious Sam native on a x86_64 arch

I used the installer from here
And installed these libraries:

lib32-smpeg (AUR)
lib32-sdl_mixer (AUR)
lib32-sdl_net (AUR)

I have to run the game as root for some reason (sudo) or else it seg-faults. And audio doesn't work. Oh well!

Tuesday, March 13, 2012

Serious Sam On Arch 86_64 and wine 1.4

Well I got it working using the linux installer software, so I was able to run it natively. Sound hasn't worked yet and you need to install a bunch of lib32 versions of some libraries. You're going to have to go through the AUR and makepkg a few times.
If I can get sound to work I'll post about it, wine was no fun, especially trying to get directX working... non free software is hell!

Ripped a copy of the iso:

Installed fuseiso to mount the file:
sudo pacman -S fuseiso

Installed wine to try and run the Setup.exe:
sudo pacman -S wine

wine Setup.exe

Then wine installed Gecko... twice :-|
80% through installing Gecko this splashscreen comes up:

Cool, clicking install, things are going well, I see a message about Direct X 8 and think "This might be an issue..."

I go to the wine.desktop menu and attempt to open, d'oh: CD check!

I google for "serious sam no cd crack" and find a patched exe in a .7z archive, rename the original to -og.exe and then copy over the nocd version here: /home/nak/.wine/drive_c/Program Files (x86)/Croteam/Serious Sam/Bin
and I try again... and it breaks
Unhandled exception: page fault on read access to 0xffffffff in 32-bit code (0x7dc87467).
Register dump:
 CS:0023 SS:00 etc... etc...
...oops I need to install directx and make sure that's working >.<

Monday, March 12, 2012

GnuGo + Node.JS == Go babies!

So I was working on getting Node.JS hooked up to Fuego go engine yesterday, but I ran into a bunch of problems.  The weirdest being the stdout data buffer would cut off at 250bytes with no further data events being emitted :( uh.. wut? anyway:

No such problems with GnuGo (so far), just ran this little test alternating black/white peices on a column and displaying an ascii board (not very useful in the grand scheme, but nice to see things are working much more smoothly :D)

Maybe I'll write an actual module for hooking this up in a nice abstract and easy to use way. I was looking at the node-redis codes last night to get ideas as I was trying to write a module for Fuego (glad I gave up, it seems to be a more powerful computer go player, but all I'm interested is the system for game rules, score keeping and stuff like that).

This bridge will open a lot of web-based go goodies once established :)

One final goal for this is a webpage where everyone can vote on where the current color should move next and after 12 hours or so, count votes and place the stone: a game through democracy/hivemind antics.

and then there's the obvious thing to do: browser-based realtime games against people/cpu with!

So right now I'm at the point of deciding whether to work hard on this backend glue, or start hacking up an HTML5 canvas/codes for the frontend side of things.  Because I could say "ah screw the rest of the Node.JS devs that would like to have a nice gnugo module" and just make everything explicit (vs abstract) for the voting app.


Friday, March 9, 2012


Online journaling now? Tsk tsk. ;)
What has this blog become?!

Anyway today spent some time doing real life stuff which was different. I will also say it was good for me.

I've been working on building a cultural-bubble around myself. Cutting myself off from mainstream, sidestream, wigglestream, etc.

Family, friends (internet and otherwise)

Website communities, IRC chats.

It could go further.  I could stay logged out of AIM/G-Talk.

I do HEAR :stuff: (I like to call the stuff memes, idea genetics) from the TV across the hallway when it's on.  And my dad puts NPR on every once in a while.  Like, I had no idea about this Kony fellow (I dont know if that's how you spell it) until I heard some news program talk about it from the TV across the hall.  Then I went on (I should block that site again...) and saw all the Kony remixes (no pun).  Haven't seen the youtube video, and I plan to keep it that way.

Everything is coming in your head to put it crudely, and you create a zygote through interpreting the meme.  What goes from the mating and is expelled through your expressions is another meme that goes into other's heads so on and so forth.  Words hardly make sense to me, its more of a shapely thing that occurs, evoking some sort of imagery of the real, or simulated construct.

I can be negative about things that I see on the TV tube.  CEO goes to work with his "low level" employees. Helps a few out, I see this as putting makeup on rotten meat.  What little bit of "the problem" being shown to the world and being dressed up in Lisa Frank band-aids.

I could go back and re-edit.... and I do a lot of the time, but sometimes I think to scramble an egg ruins it in a sense, but on the other hand, it makes it easier to consume.

I drank a raw egg once, just to see what it felt like.

I'm not sure if I want to continue down the rails path at the moment, it seems pretty cool, but it seems like a 80/20, where rails decides 80 and I wiggle around on the 20... I guess that's why it's called rails :P no real wiggle room, which can be useful in some situations, quick idea to market (as long as the idea can fit on a train!)

However, I am not going to be so quick to give up Ruby, I think I might try to do some scripting with it next time I feel like reaching for Python or abusing Node.JS.

But now part of me wants to write my own framework, on node probably.  Maybe something that gives me the 80/20 of Rails, but since I wrote it I would know exactly what the 80 is, and could add features to the railway as needed instead of digging through massive API libraries.  I like the idea of having JSON config files to setup ideas, then have the main program thing look at the JSON to setup the right stuff for whatever application needs.

Something that I haven't found is a template language in the vein of EmbeddedRuBy or embeded PHP, actually, there is EJS (Embedded Javascript) but I haven't really figured that out yet, that was the last hiccup I had with Express before I gave up using it last time (Dotty was almost express until I said FORGET THIS. And had apache serve all the static files)...


server: {
  port: 80,
  local_root: __dirname,
  static_dirs: ['images', 'javascript', 'styles'] }  
database: {
  require: 'mysql',
  client: createClient({user: 'root', password: 'root'}),
  models: ['models'];

etc . idk, maybe it could work, something like that but a bunch more stuff until it just looks unbearable :P

whatever, gonna watch a movie, 1975...

Thursday, March 8, 2012

From and To

I don't know if this will fit in a 140 character microblog so here goes:

Coming from a long background of destructive hacking in my teens, every time I implement a new feature in one of my new-found love of constructive hacking I think: "How could I exploit this?"

When working with sending data between the browser and the server, the developer has to remember that everything on the client side programming can be changed: What you would expect to be a JSON string could come in as some executable javascript instead... and run on your server if you have a javascript interpreter running: some NoSQL databases run JS to determine what data to send back to the main program, and Node.JS is completely javascript... I've never used .eval()...

I still feel very new to this, terms like "Prototypal Inheritance" vs. "Classical Inheritance" don't mean anything to me, but they gnaw at the back of my head irking me on to learn more about ... stuff.

I just started looking into Ruby on Rails today, partially kicked off by the Igor guy finding a insecure default setting and exploiting it on, and also kicked off by wanting something a little more compatible with MySQL than Node.JS express.  I've been frustrated with that framework on multiple occasions... I'm not saying it's bad, it's just a difficult framework for me (at the moment) I still don't have a firm grasp of "middleware" and why I need certain types.  The documentation assumes a skill-level and experience with other web-frameworks that I didn't have.  However, I have come away from my (couple? three?) projects with Express "smarter" about web frameworks and the terminology in general.

While looking at Ruby frameworks Sinatra and Rails, I was really tempted to go with Sinatra, I liked how it seemed to be simpler (as in Arch linux simple vs Ubuntu simple) but I think I repeated my actions with my Linux adventures:
I started with Slackware, bumped into Ubuntu and fell in love with how easy it was.
I started with Node.JS Express, decided to finally try Rails, and am enjoying all the defaults it provides.  I am also new to the Ruby language, and am impressed by the simple and beautiful syntax that it uses.

Anyway, I hope to start hacking away at a blog soon, I've almost finished the Rails for Zombies course, but you don't really start "grokking" until your head start banging against the system for some hours outside of the classroom.  The challenges are a great way to teach, but I don't feel like I'm retaining very well today... but I shouldn't be too hard on myself it's only been a short amount of time...

It's neat to observe the rant style change from emotional poetic of last year to technical ... I'm tempted to say poetic... but it's not ;)

Tuesday, March 6, 2012

New Tool

Multi-Project TODO list.
Small note maker thingy, maybe like evernote, but I've never used that so IDK.

Because this is a misuse of a blog and I hate signing up for complex stupid sites when all I want is to make some quick notes or lists that need to "checked off"

Maybe even make it have a nice command-line interface, but it would also be nice to have a community so certain projects can gain social momentum.  Like my dotty list could have "e-props" or whatever to get the author more excited about actually doing whatever it is that IT wants to do. Then mayhaps collaborations could form.  Github is nice, but a little too complex for my personal tastes and is just a huge barrier between the layperson and version control of stuff.
The idea really isn't version control as it is ... just a thingy... idk, maybe I'll sketch it out.

The idea of taking a big problem and dividing into smaller tasks is what computer programmers do all the time, and the skills used for that can be applied in many areas of "problematic life".

I don't want to get too retarded here, but it makes me think "What are these problems and why are we trying to solve them?" -- then it reminds me of a revelation I had a couple days ago with "The medium is the massage" -- the problems give us something to talk about.  It doesn't matter what the problem is, it's just that we're talking is the whole point of it.

So there's groups of people who devise complex things, layers of abstraction I suppose, machines, social structures and relationships of people and people, self and selves, machine and consciousness, what have you...

And the content is beside "the point", the point being the joy of using a medium for communication.

I've also been noticing this weird thing going on with the internet connection:

I't's "pulsing" or something this is during a torrent download and I have the upload limited to 100kbs at the moment, I was seeing if limiting the up would help... and it didn't.

I don't know what's happening

Lathing Poo

The Lathe of Heaven is a book I want to read.

I wonder why?

Google has my emails, my blog, my G+ social net, and is constantly crawling the web with magic black boxes that can return search results in fractions of seconds to billions of users around the world.


press play and read

My friend's friend, or should I say -my friend- (since we're friended on FB)  was recently admitted to a university is now being asked to withdraw.  It would be too much red tape to have them force him out after admitting him, and there's no chance they want to work together with him anymore.


Reason 1, 2 or 3? No, not at all my friend, this is the reason they gave:

Because of using the girl's bathroom while equipped with a penis.

No official or un-official complaints.  But that is the reason according to the school duders.

Not sure if that's the real reason.

Anyway, in the future there will be no currency. In the future there will only be entities vying for your attention.  Attention will be the new currency. Keep being "interesting" world, and you've got my attention.

Monday, March 5, 2012


Cool :)

Had some interesting issues on the first stress test (thanks /g/):
  1. redis.conf wasn't up to snuff, had a limit on memory that got filled up and closed redis-server (128mb)
  2. Collectively we drew 135,297 dots before the hiccup.
  3. More than one auto-clicker completely removes natural rate limiting!
  4. Loading that many dots onto the canvas iteratively took some major CPU work on client-side
Tail of redis.log:
[2229] 05 Mar 06:09:46 * 10000 changes in 60 seconds. Saving...
[2229] 05 Mar 06:09:46 * Background saving started by pid 13388
[13388] 05 Mar 06:09:46 * DB saved on disk
[2229] 05 Mar 06:09:46 * Background saving terminated with success
[2229] 05 Mar 06:11:10 # WARNING: vm-max-memory limit exceeded by more than 10% but unable to swap more objects out! 
Redis config changes:
  1. No more saving to disk at all
  2. doubled amount of vm-max-memory (although that shouldn't be needed)
  3. other small stuff...
Wrote a small node script that checks Redis every 5 minutes, if there are more than 25k dots, delete the key and start fresh.

  1. Rate limiting, should be simple enough. Maybe... Or even some simple machine learning to rate limit specific users ^____________^
  2. Clone color of other artists by clicking their dot.
  3. Fix horizontal position on indicator 'X' when resize and horiz. on mouse location on canvas. 
  4. Move exclusion marker on connect to currently excluded ID (needs to wait until DOM load)
 Best /g/ comment:

    Saturday, March 3, 2012

    Transmetropolitan reference in Amazing World of Gumball

    While watching the latest gumball I happened to notice the 3 eye'd smiley from transmetropolitan in the background.

    Cool :)

    Friday, March 2, 2012

    Tons of DNS requests from pidgin - googletalk

    So I was getting TONS of DNS requests from my computer.  I had to figure out what was going on here's 2 requests and responses I've arbitrarily yoinked out of a wireshark dump:
    2    0.000436    DNS    87    Standard query PTR
    8    0.262071    DNS    86    Standard query PTR
    31    0.840231    DNS    272    Standard query response PTR
    29    0.825752    DNS    270    Standard query response PTR
     My friend suggested nscd (name service cache daemon) which was installed, but not active... I looked around for more information on it and it seemed to be more for authentication caching than DNS caching.

    I googled for DNS caching on arch and I found pdnsd

    Set it up according to the wiki, with a few tweaks, systemctl enable and reboots later... the DNS flood is over.


    Tuesday, February 28, 2012

    Grokking is ALWAYS a tradeoff

    This is a concept that isn't touched on in most definitions that I've read of grokking.  I found a paragraph about shell scripting that said something that really helps:
    Shell scripting hearkens back to the classic UNIX philosophy of breaking complex projects into simpler subtasks, of chaining together components and utilities. Many consider this a better, or at least more esthetically pleasing approach to problem solving than using one of the new generation of high powered all-in-one languages, such as Perl, which attempt to be all things to all people, but at the cost of forcing you to alter your thinking processes to fit the tool.
    (bolding my own, excerpt from:

    Because in soviet russia water DRINK YOU.

    Monday, February 27, 2012

    `grep` for "an ipv4 ip address"

    That means return lines with normal (ddd.ddd.ddd.ddd style) ip addresses:

    cat .bash_history | grep -E '[0-9]{1,3}\.[1-9]{1,3}\.[1-9]{1,3}\.[1-9]{1,3}'
     I was looking for a server I connected to a few days ago, but didn't want to search through everything manually. I'm no regex master, so I am SURE there's a better way (maybe grouping that first one and saying {3}? ...

    haha yep:
    [nak@arch ~]$ cat .bash_history | grep -E '([0-9]{1,3}\.){3}'

    Sunday, February 26, 2012

    My Faith: What people talk about before they die

    I got an okay face feel...
    "We don't live our lives in our heads, in theology and theories.  We live our lives in our families:  the families we are born into, the families we create, the families we make through the people we choose as friends."

    Yeah, I'll probably be calling out for mommy when I die.  Genetics, man. Dem genes.
    Or, who knows, maybe my death will be violent and full of derp.

    Friday, February 24, 2012

    The Fly (1986)

    I just recently watched The Fly (1986) with Jeff Goldblum playing the scientist who got too drunk while playing god.

    I really liked the maggot prop in the horrific abortion nightmare from the movie. Take a look here... warning, it's graphic.

    That's a prop I wouldn't mind trying to build to be honest.

    After Seth Brundle mixes genetics with the fly he takes on a personality of someone who's come down off a really good acid trip and decided to smoke a bowl of methamphetamine to keep the glow going.  He settles down after a while, but becomes grotesque.  I found it interesting how they talked of "the flesh" before the transformation -- pretty interesting message...

    I couldn't help but laugh at all the terrible gore and juices, not that it was badly done, just that it was horrifying.  I really liked it and think it would be fun to make scenes like that.

    You can also easily draw parallel between Kafka's Metamorphosis and this movie, the difference being Brundle had to get someone to care about him before he went through the metamorphosis while the character in Metamorphosis had a family to begin with.

    Monday, February 13, 2012

    A lighter meal

    The clever implementation of and Node.JS being abused by heinous ASCII pr0n enthusiasts. -- the demo's there (For now)

    "Adjective" Singularity

    This article pulled a huge comment out of me,
    So it must be worth a blog post:

    Good article.
    I will say that the individual mindset will feel inherently ostracized whether he is in a state of prosper or poverty.
    I also believe Atlas Shrugged is the story you’re talking about: the transistion between a world that loved novelty, innovation and risk towards a sterilized and safe world of predictable cycles..
    I don’t believe it’s ideological martyrdom, you can’t kill a rock… its a hibernation if anything:
    “Build your cities proud and high. Lay your sewers. Span your rivers. Work feverishly. Sleep dreamlessly. Sing madly, like the bulbul. Underneath, below the deepest foundations, there lives another race of men. They are dark, sombre, passionate. They muscle into the bowels of the earth. They wait with a patience which is terrifying. They are the scavengers, the devourers, the avengers. They emerge when everything topples into dust.” — Henry Miller: Sexus
    Maybe I truly am a doomed deviant not deserving an existence among the people-pleasing master race. Your article did call it: I am pretty much homeless…
    Another thought (cosmic shmuck level):
    that the whole cosmos got too caught up in itself, and everything is springing back very forcefully to try and attain zero again… and in doing so the pendulum is going far into what we see as group think. I don’t know, this movement of “the principle” is why I think the first sentence of the Tao Te Ching reads like it does.
    There are A LOT of people who are currently prospering that don’t really DO anything besides be conduits for the skills and money of others. This doesn’t worry me either, I’ve seen it as a stretching out of cosmic energy, instead of concentrated individuals it has become a network of node humans that live by connecting people to eachother, just creating a bigger and bigger network (is this the singularity in action and it’s just waiting for me to “give fully”?). It’s interesting and I believe I could do it, but I would come away feeling dirty.
    Maybe it’s because I AM the dirty one in the eyes of “the ‘human’ singularity” (the adjective means less and less as we get closer to pure singularity).
    wow. lol

    Sunday, February 12, 2012

    Blocking Sites -> Writing Blog Entries

    So, I've been withdrawing from the online community as of late. Here, let me post my hosts file:
    [nak@arch ~]$ cat /etc/hosts
    # /etc/hosts: static lookup table for host names

    #      canv    canv    facebook    facebook    localhost.localdomain    localhost arch
    ::1        localhost.localdomain    localhost

    # End of file
    Whaaa?! Yes - I've decided to block a couple sites (I don't know how long I can live without I've been really addicted to that site the past couple months, even setting aside full days to doodle-dick around, which I can't say isn't productive.  It is productive, in ways like this:

    [Link to Thread]

    Oh well, I just spend a good 10 minutes checking out threads on when I got that link (had to comment out in /etc/hosts of course) There was a really neat one in #abstract where a fellow wanted to find out what happened to a innertube when it was cut in a spiral... and someone posted a vihart youtube video:

    Which was a treat, vihart makes the best videos (I'm jelly).

    ANYWAY, what I did with all my freetime today! WOoo000.

    I found this neato website just click and you'll be greeted with a super video showing it's font creation interface so I signed up last night (going in fully aware that font creation is a time consuming processes that takes a lot of patience -- I tried it years ago)


    I started making a font last night (I think I did up to S or R then got sick of the pattern I was going with (5x5 bricks aka font parts) and decided to do something with a bit more wiggle room: -- I've decided to call it 'Horny' for now, and that's a step up from my friend calling it 'Satan's Anus' lol -- maybe I'll end up calling it 'Mindsforge', but I sort of want to make another font for that name.

    Took me some of last night and a lot of today to get that far (All caps and some basic punctuation, and it still needs some tweaking, but I sort of like it!)

    I've also been wanting to experiment with using the CSS shadow as a glow, I think it turned out pretty sexy.

    I can be hypnotised by my work... I am, probably, I just don't even know it!

    Love, The End

    Monday, February 6, 2012 Partial Life Inventory

    Age 10> "I'm a decade old!!" -- I remember climbing the tree in the back of my aunts yard thinking about decades. I probably had a phoenix suns shirt that my mom got me, she was really into that. 5th grade, I was really into spies, and reading about UFOs and carnivarous plants and mars missions. Magic trick books and I prided myself on knowing where everything was in the library at school. Being a 5th grader was almost being a head-honcho 6th grader. I remember having intense crushes at this time of my life. I had braces.

    Age 13> "I'm a teenager now..." -- puberty frightened me, I worried about having a wetdream because I learned about them from sex-ed.  If I got a boner at night I would get a flashlight and check to see if anything new and weird was happening. Started getting fuzzy, I loved The Matrix and made friends with some more secretive types, we'd hang out after school concoting "chemistry experiments" (as to not alarm the DHS).  At one point we put koolaide powder in a peice of paper and I was like "I'll smoke that hurr hurr!". I spent the night over at that house alot with the kid that lived there, we would login to IRC and DCC sub7 trojans to people and have cheap adolescent fun.  Also defaced the districts webpage BY ACCIDENT because they had their frontpage extension setup wrong, wow, good times.

    Age 16> I got glasses my Junior year of highschool -- I was getting nearsighted, maybe because of a growth spurt and/or computer use. I started a science and tech. club and participated in my other friends extracurricular activities.  No sports.  There was a cacophony of lunchtime clubs, which was nice because you could eat inside around other people that were talking about interesting things. I was printing an underground student newspaper at the time which caused a a little rucus, and my ability to cause trouble with computers was also increasing, and I was still having fun with that.  I wore a labcoat to school. I liked this girl who wore one but she graduated, and I've always wanted to be a mad scientist so it worked out. It became sort of a security blanket once everyone wasn't intrigued by it anymore.  My cohorts began wearing them to, which was to my chagrin -- my individuality! Now were like a gang of evil nerds, which was sorta cool :)


    Age 25>Constantly learning, reading and creating now that I've dropped out of school. Programming, esoteric teachings, painting, electronic engineering... as of late (past 6 or 7 months... maybe longer) I've been recovering my brain ("the drugs" really did a trick) and working on delving deeper and deeper into the workings of Linux, web development, and programming in general.  Like, today I was figuring out the differences between 64bit and 32bit assembly instructions, as well as looking into nginx.  Last night I checked out a programming language called Rust (its really new and in development).  I'm making plans to move off my friends VPS onto my own so I can begin hosting sites in order to make some money (I'll continue squatting until I actually have a client I think).  I've set up a vpn recently (without knowing how at first) which paid very well (first well paying computer job!) and has allowed me to buy some new stupid toys, but its also seed money for a business... oh yes, living on my dad's couch and helping him out, he has parkinsons and I've got to witness it progress, yay. Don't worry I don't get offended by MJFox jokes... offended people make me sick

    [Link back to thread ]

    Wednesday, February 1, 2012

    On Friendship: And other Tainted Musings

    Do you ever make the distinction between "IRL" and "Internet" friends?
    I had a dream once where I was looking at a GIF of someone cutting their limbs off with a power tool. I then lost the boundry or "slipped consciousness" into the experience of cutting my arm off with a circular saw.
    It wasn't terrible, everything seemed to flow right, and there was little stress during the change of perspective.

    It's also common to make a distinction between "artificial intelligence" and "intelligence".

    Nature and human doings.

    I will stop here, this finishes some short examples of false division.  Even between dream world and the real world, there is something that experiences.  We can say what it experiences can be based on perspective and how that perspective is distinct.  Point consciousness

    I don't like to use the word "real" because it implies some sort of higher Truth. I'd like to reformulate the question to be "Meatspace" and "Cyberspace" instead of "IRL" and "Internet".

    We are interacting with information constantly.

    Some of this information becomes labeled as "friends".  I don't know why I feel compelled to build a model of the universe on to which to stand and speak about such abstract ideas as friends... but it seems necessary.
    You have to know where someone is coming from in order to understand what they are talking about.

    Philosopher/Mathematicians love to start with a set of axioms from which they can draw logical conclusions and arrive at proofs of truth within that system.

    The answer to the prompt, in my current state of consciousness, is a plain and obvious "Yes."

    On to why this is obvious:
    Looking at the choice-tree that leads back all the way to the big bang, I've confined myself to a certain way of thinking:
    Pain and pleasure exist.  It is easy to discuss dichotomies, however we know there is a infinitely varied "emotion" that the something can exprience outside of the Pain-Pleasure spectrum. There are multiple types of consciousness in which we experience this "emotion".

    Usually we're acting out a "strange loop" and re-enforcing our subconscious beliefs, or how RAW puts it "What the thinker thinks, the prover proves"...

    * * *

    My friend asked me which friend has had the most influence on me while we were walking to the store in Flagstaff. This question touched me somewhere deeply. I had to answer, "Dead ones" the friends who figured out how to bind themselves in time and let me experience them through words.  Internet friends would be on the same level as book friends, they are bound in words.

    Meatspace friends are also bound, but not by words alone. They are bound to maliable, protein rich, fatty flesh as well.

    That is a DISTINCT DIFFERENCE to my sober*-ego-mind.

    My friend was upset with my answer because he was also looking for me to talk about meatspace friends... and of course I knew that's what he was looking for, but I can't say I've really looked up to anyone: maybe I have a really bad case of self-absorption.  He said I was the biggest influence on him.  It made me feel bad because I don't think I'm a good person to model after.

    We can talk about how the syntax changes between real-time interaction, time-binded (word) interaction... but that's not important, the important thing is there is a distinction.  You could hang out with someone in meatspace for a long time and have a good time that you wouldn't have anything to talk about online, and the other way around... I've seen relationships not transfer well between the online universe and the meat universe.

    There is a level of survival to all this. The individual and the collective seem to be at war constantly.  Deviations from the norm are destroyed and the norm is constantly in motion.  Those who cannot adapt will die, the universe moves and you move with the universe.

    Questions of pretending is besides the point.  If you feel they are true friends then that's all that matters. If you find joy from pretending to be something or feel that it's necessary, then that's what matters.

    I personally don't find any joy what-so-ever in pretending, I pretend out of necessity sometimes (ie family functions, bodily functions, difficult, volitile situations) but most of the time I don't have some "faker" function sitting between the universe and myself, and if I do, it's like turning the steering wheel of my universe and what was once "fake" becomes "real" and a non-thought.

    *Culturally acceptable thought patterns and behavior

    Ask yourself why you asked me that question, because that will lead to self-growth more so than my ramblings on how the universe seems to be assmebled to this guy. For me the distinction is obvious and is beyond consideration for me at the moment.

    There is no friend, just people


    I tried to answer the question from many different angles, and I couldn't do it. I consciously avoided defining friend:
    To define "friend" kills it.
    "Freedom defined, is freedom denied"

    Tuesday, January 31, 2012

    Wireshark error when run by normal user

    You need to add your normal username to the wireshark group:
    sudo gpasswd -a yourusername wireshark

    This next is the WRONG solution.  Really... you guys shouldn't read my blog ;-)
    ...I am keeping for historical purposes:

    Couldn't run /usr/bin/dumpcap in child process: Permission denied

    da... what??

    -rwxr-xr-- 1 root wireshark 68688 Jan 13 12:36 dumpcap
    $ sudo chmod +x /usr/bin/dumpcap
    $ ll /usr/bin/dumpcap
    -rwxr-xr-x 1 root wireshark 68688 Jan 13 12:36 dumpcap

    Sunday, January 29, 2012

    Huge SCR

    Wow. If this thing works, I may have got a pretty smokin' deal on a fatty SCR from the local electronics surplus shop: Apache Reclamation.

    I found the datasheet online after a little bit of searching and found out it has these stats:

    • 3000V Reverse voltage
    • 2050A Avg. onstate current
    • 19kA repetitive peak current
    • 29kA surge current
    WOW! This is THE SCR for some sort of heavy duty project (TMS machine, coin shrinker, can crusher, disc launcher, rail gun... etc!)

    I'm guessing the broken lead is for the trigger ground or something? They don't have any physical diagrams on the datasheet.

    Now I just need to find some low ESR capacitors and I'll have the biggest components of a really solid TMS machine.

    Saturday, January 28, 2012

    dhcpcd being a bastard and how to manually configure with iproute2 suite

    Hello, and welcome to the next installation of my adventures with Arch Linux!

    I got lucky on installation day and got dhcpcd to work a few times, but today was another story.
    I looked at what was going on with wireshark, and it seems like dhcpcd was sending out dhcp requests, the router was replying with dhcp ack, however, dhcpcd would just request again... and again... maybe I'll get around to actually debugging dhcpcd, but until then:
    So, you obviously know that Arch has deprecated the old net-tools (ifconfig, route, etc) and is using iproute2 as the standard network configuration suite.

    tl;dr this is how I configured my interface to work with a standard home router:
    ip addr add dev eth0
    this assigns an ip address ( with a subnet mask ( to the eth0 interface.
    Now, we want to add a default route:
    ip route add default via
    Cool! Now we need a DNS server, and we should be set. Modify the /etc/resolv.conf to contain the nameserver directive of your DNS server of choice:
    # Generated by dhcpcd
    # /etc/resolv.conf.head can replace this line
    # /etc/resolv.conf.tail can replace this line
    That's my entire resolv.conf file, I use a COX dns server (because I have that IP memorized for some reason) but you could use the great OpenDNS:

    You will want to edit your /etc/rc.conf file for static ip vs. DHCP if you need to.  Seems like lots of people are having issues with the new dhcpd.

    Friday, January 27, 2012

    Installing Arch

    My experience installing Arch Linux.
    Today I installed Arch Linux, I was attracted to it by its philosophy of simplicity (leave it up to the user/admin what to install) and it's rolling releases (I love bleeding edge stuff, hipster alert)

    Let me sing you the song of my people.

    1. Put in the Arch Linux cd with the "Netinstall Image" burned to it, booted it. And went through the steps.
    2. I ran into an error after going through and selecting a bunch of packages to download -- something like "Ruby depends on yacc, cannot resolve dependency" -- This sucked. "At least I was penning down all my pacakge selections"  I thought and figured I should just install a bare bones system anyway and install everything I want AFTER I got the system up and running.

      I selected these main packages (which installed without error):
    3. It booted to a login prompt "login:" which I used root/password and could start xfce4 with "startxfce4"
    4. And began install packages and configuring stuff, its best to do each package one at a time so you can alter the configuration files as needed.
    Here's the list of packages I've installed so far (using pacman -S package_name):
    • vim
    • firefox
    • pidgin
    • xdg-utils (this fixed an error when clicking links in pidgin)
    • sudo
    • flashplayer
    • gimp
    • audacious
    • gstreamer0.10-plugins(this is a group of 6 packages including the good, bad, ugly)
    • mplayer
    • mirage
    • wireshark
    • nodejs
    • slim(this is the login manager I chose)
    and I've removed:
    • vi
    • nano
    I've added these lines to /etc/rc.local
    #remove pc speaker kernel module
    rmmod pcspkr

    #command aliases
    alias vi='vim'
    alias python='python2'
    alias ll='ls -l'
    alias la='ls -a'
    and /etc/rc.conf was kept default from the initial settings besides this line:
    DAEMONS=(syslog-ng network crond slim dhcpcd)
    We added slim and dhcpcd (networking is a pain during the install, I had to run dhcpcd (got lucky from autocomplete trying to run 'dhclient') in another tty.)

    This was error that gave me trouble:
    [root@none etc]# pacman -Q node.js
    warning: database file for 'community' does not exist
    error: package 'node.js' was not found
    I fixed it by running: pacman -Syy
    which does a Sync and yy refreshes the database files from the server (even if they appear up to date).

    That's it for now. Going to restart now to see if that DAEMONS line will work. Godspeed you black emperor!

    I've realized its not really a good idea to add stuff to rc.local ...instead I put that stuff in /etc/bash.bashrc

    rc stands for "run command" on start (something like that, there's lots of arguments)

    My DAEMONS line looks like this now: DAEMONS=(syslog-ng network crond alsa)

    Because dhcpd is broken for me (and it seems like some others, I should look into fixing/making a proper bug report now that I'm using arch on a laptop... )

    Thursday, January 26, 2012

    OOPS! formatted my windows partition (ntfs) with Ubuntu 10.10 (ext3/4)

    This happened a while back, and took me a while to realize what I had done.  I've just recently been seduced by Arch Linux and wanting to check it out, I need a place to install it and fiddle. Having that harddrive that I've left unplugged due to some hope of data recovery, I begin the journey of said data recovery.  Here is the song of my people.
    nak@none:~/recover$ sudo dd if=/dev/sdb of=./recover.img
    I create a directory to work in (recover) and use dd to copy all the bytes from the harddrive to a file, I put a .img extension because I don't know if it would be considered an ISO or what... it's just the raw byte-age of the disc.
    I plan to take recover.img and run it through `foremost` -- until then I wait for ~250 billion bytes to be copied from one drive to the other drive.

    --after washing dishes and listening to a minimal techno mix--

    488397168+0 records in
    488397168+0 records out
    250059350016 bytes (250 GB) copied, 3058.94 s, 81.7 MB/s
    alright! So I downloaded and installed the latest version of foremost:
    tar zxvf foremost-1.5.7.tar.gz
    cd foremost...etc
    sudo make install

    foremost -t all -v -T -q -i recover.img

    Finish: Thu Jan 26 14:45:29 2012

    jpg:= 27888
    gif:= 7371
    bmp:= 1723
    wmv:= 237
    mp4:= 28
    rif:= 2851
    htm:= 718
    ole:= 560
    zip:= 1225
    rar:= 112
    exe:= 22253
    png:= 23084
    mpg:= 2
    pdf:= 476

    Foremost finished at Thu Jan 26 14:45:29 2012
    ...and now I've got a bunch of files (and corrupted files) that I may or may not trudge through to see if there's anything that I forgot I needed.

    Peace out, hope this helps someone.

    Wednesday, January 25, 2012

    O anon...

    Well according to my studies, everything is a metaphor, or abstraction of a signal that is processed out of the eternal cosmic background radiation. How this occurs is similar to pointing a camera at a television screen displaying what the camera is seeing, the "infinite mirrors" effect. The camera is constantly feeding information off of itself from itself and displaying that information back again. So, in order for the universe to divide and "make sense" out of itself, we climb the ladder of sanity out of the primordial chaos. Each rung that we climb is a step towards abstraction and away from "hard reality". Now, how we go about explaining the mechanism of metaphor is based on what direction we are looking (metaphorically) and where we start in our journey to explain and find cause-effect relationships.

    There is no one-hundred percent correct objective answer (one could say) that can be wrapped up in abstractions attempting to describe itself. I'm a republican.

    Saturday, January 21, 2012

    Node.JS Bitmap Steganography <-- Link if it's still active.

    I don't really know what to say, go look at the link, there's a video explaining it.

    I was messing up the algo for a while, finally got it down today.  The image on the right is the stego image, the image on the left is the original.  The difference is barely perceptible.

    Some stego programs use only the least significant BIT, so the change is even less perceptible, however you're only able to fit 1/4 as much data into a bitmap file, always trade-offs.

    Thursday, January 12, 2012

    Defending against Reaver

    Recently a tool, Reaver, was released which brute forces WPS keys (I haven't looked at the source, but it should also be checking to see if the responses from the router will give out any information on partial key guesses):
    An attacker can derive information about the correctness of parts the PIN from the AP ́s responses.
    If the attacker receives an EAP-NACK message after sending M4, he knows that the 1 half
    of the PIN was incorrect. 
    If the attacker receives an EAP-NACK message after sending M6, he knows that the 2 half
    of the PIN was incorrect.
    [From this PDF]
    Anyway, turn of WPS from your router settings to protect from this sort of attack. Here's an example from a Netgear router:
    And yep it should :)

    Send me more screenshots of your own particular router if you want me to post them. @uberscientist on twitter, or email me

    Sunday, January 8, 2012

    Corpus Errorum Biologicorum

    But exactly the distinctive work of science is the modification, the reconstruction, the abandonment of old ideas; the construction of new ones on the basis of observation. This however is a distressing operation, and many refuse to undergo it; even many whose work is the practice of scientific investigation. The old ideas persist along with the new observations; they form the basis - often unconsciously - for many of the conclusions that are drawn.

    This is what has occurred in the study of heredity. A burden of concepts and definitions has come down from pre-experimental days; the pouring of the new wine of experimental knowledge into these has resulted in confusion. And this confusion is worse confounded by the strange and strong propensity of workers in heredity to flout and deny and despise the observations of the workers in environmental action; the equally strange and strong propensity of students of environmental effects to flout and deny and despise the work on inheritance. If one accepts the affirmative results of both sets, untroubled by their negations, untroubled by definitions that have come from the past, there results a simple, consistent and useful body of knowledge; though with less pretentious claims than are set forth by either single set.

    Our first fallacy springs from the situation just described. It is:

    I.     The fallacy of non-experimental judgments, in matters of heredity and development. . . .

    Our second general fallacy is one that appears in the interpretation of observational and experimental results; it underlies most of the special fallacies seen in genetic biology. This is the fallacy that Morley in his life of Gladstone asserts to be the greatest affliction of politicians; it is indeed a common plague of humanity. It is:

    II.     The fallacy of attributing to one cause what is due to many causes.

    III.     The fallacy of concluding that because one factor plays a role, another does not; the fallacy of drawing negative conclusions from positive observations. . . .

    IV.    The fallacy that the characteristics of organisms are divisible into two distinct classes; one due to heredity, the other to environment. . . .

    VII.     The fallacy of basing conclusions on implied premises that when explicitly stated are rejected. . . .

    Many premises influencing reasoning are of this hidden, unconscious type. Such ghostly premises largely affect biological reasoning on the topics here dealt with; they underlie several of the fallacies already stated, and several to come. . . .

    VIII.     The fallacy that showing a characteristic to be hereditary proves that it is not alterable by the environment. . . ,

    IX.    The fallacy that showing a characteristic to be altered by the environment proves that it is not hereditary. . . .

    It appears indeed probable, from the present state of knowledge and the trend of discovery, that the following sweeping statements will ultimately turn out to be justified: -

    (1)    All characteristics of organisms may be altered by changing the genes; provided we can learn how to change the proper genes.

    (2)  _ All characteristics may be altered by changing the environmental conditions under which the organism develops; provided that we learn what conditions to change and how to change them.

    (3)    Any kind of change of characteristics that can be induced by altering genes, can likewise be induced (if we know how) by altering conditions. (This statement is open to more doubt than the other two; but it is likely eventually to be found correct.) . . .

    X.    The fallacy that since all human characteristics are hereditary, heredity is all-important in human affairs, environment therefore unimportant. . . .

    XI.    The fallacy that since all important human characteristics are environmental, therefore environment is all-important, heredity unimportant, in human affairs. (247)                                             H. S. Jennings