Klingon Bird of Prey Buildup Part2

December 22, 2013 Leave a comment

More lights!!!

So, things are on a good pace. I’ve been taking advantage of some rare free time that I have.

I started to prep the bulkhead lights at the bottom of the ship, so this will be visible in the underside.  Using a new method I learned of using clear , transparent Dental Acrylic I was able to cut out the squares and make windows. The dental acrylic diffuses the light and gives it the appearance of a dull soft glow.  There is still work to be done, and tons of light leak. Partially because I did not prep the area with foil yet. After doing this most of the light should be blocked.

Bulkhead Lights

I started to break down the wings and decided it was time to take a closer look. A few days ago, my son was watching Star Trek Generations on TV. I noticed that the wings of the ship each had 2 flood lights. It looked cool and thought to myself, I should use that as a reference.

Bird of prey Wing

Note the wingspan is rather large for a model at 6 inches, When put together it should look rather impressive. The flood lights can be seen at the top of the wing.

Using a 57 MicroBit, I drilled out the holes large enough to fit more than 1 optic cables through it,  The reasoning behind this was to avoid any hassles when running the cables through and in the event I wanted more light I can add multiple Optics to the holes.  the Holes are no bigger than 1/10th of an inch

Flood Light Holes

About 1/10th Inch

I ran two of the thicker fiber optics to each of the holes and this is how it looks, a nice dryfit shot.

Illuminated Wings

Wing Close Up

After sanding off some rough edges, I decided to give a quick glimpse of how this was starting to look together.  For this one I used my professional camera and ditched the phone :P

1/2 Wing, Torpedo, Forward Lights & Port Flood Lights

As the project is finally entering the mid cycle, I’m starting to realize how challenging this is becoming. The wires are going to be one of the biggest challenges, there are so many optic lights and various electronic wires they need to be properly shielded to avoid a short, I don’t even want to think of that happening at this point. :)

Klingon Bird of Prey Buildup, Part 1

November 27, 2013 Leave a comment

So for a long long time, I have been into building models, I actively contribute to various google modeling communities and have been an active reader on http://www.starshipmodeler.com/ Which covers not only Star Trek, but Battlestar , Star Wars and many other SciFi / Fantasy based kits.

Recently I’ve been getting into the lighting end which adds another notch of realism into the kit. I have collected over $300 worth of kits and lighting accessories. Everything from surface mount diode light strips to standard 3mm/5mm LED bulbs. All easily powered via a 9 volt and a few capacitors.

My ultimate goal is to build the 1/350th Enterprise but before taking that on I started a Klingon Bird Of Prey and would love to show the results of my works so far.

I began with the engines. First step to make this as convincing as possible is to use some sort of reference. Well, mine was about an hour of parsing through google images and trying to devise a way to make the light diffuse properly in the engine bay.

Engine Breakdown


To create the soft orange glow, I used 1 yellow LED accompanied by 2 red LED bulbs,

Engine LED

Using thin Styrene strips I masked the inner surface of the clear plastic ,

Masking Clear Plastic

And when turning on for the first time, the Styrene combined with tissue paper creates a soft orange glow.

Engine LED Diffused

After dry fitting the electronics and adding some more tissue paper progress was made.

BOP engine


After getting the engine sorted out I put those pieces aside and began to work on the windows.  I was using small fiber optics to install in the windows.  which would require drilling out the desired locations with a dremel and 0.7 mm bit.  The fibers are created using 1 white led and some heat shrink,  Using a soldering iron gently melt the ends of the fibers and bunch them evenly together, once attached via heat shrink there should be virtually no light leak coming from the heat shrink casing, forcing all of the available illumination through the fiber.

After this was done, I drilled out two small windows and a bottom strobe light on the dorsal side of the ship and ran the small lights through. See below for the effect.

Fiber LED and 1st set of windows.

Close up of the windows which will be right above the torpedo launcher and bottom stage light.

1st set of windows


Torpedo Launcher

The Torpedo launcher was in itself quite a difficult task. But using a few LED’s, heat shrink, and fiber stands I was able to get the job done. I’m using a special FX board , special thanks to John Cook @ Madman Lighting

To create the ring effect, using a piece of heat shrink and a  bundle of fiber attached to a red bulb, i was able to lay the fibers flat on a strip of electrical tape. Then using another bundle of fiber attached to a white bulb place them in the middle of the stretched out red fibers.  Slowly wrap the red fibers around the white bundle to create a ring effect.

Once completed the final product looked like this

Torpedo Launcher

To See a video of the torpedo launcher in action check out this link:


And of course a video with the lights off, to see the full FX of the torpedo launcher


While this build continues I plan of posting more detailed pictures and videos, I’m still figuring out may of the tricks used my professionals such as Steve Neil



f.lux screen temp adjustment

November 8, 2013 2 comments

It’s been a while since I have posted here, but I thought it best to pick it up again :)

A few weeks ago I found this website that adjusts your screen temp to accommodate the time of day. Here is a quick description below:

f.lux fixes this: it makes the color of your computer’s display adapt to the time of day, warm at night and like sunlight during the day.

It’s even possible that you’re staying up too late because of your computer. You could use f.lux because it makes you sleep better, or you could just use it just because it makes your computer look better.

Check it out @


Just to clarify this does work on Ubuntu / Raring, I’ve also installed it to my Windows and random laptops around the home. When working  late night, your eyes don’t feel like they are being burned out of your head from staring at the computer screen.

Try it out!

Ubuntu 13.04 now available for the Google Nexus 7

December 7, 2012 Leave a comment

Hey All,

Nexus7 Running Raring 13.04

Today was the official announcement for the Nexus 7 supporting 13.04, for all you Nexus7 users that may have missed todays ubuntu meeting on Freenode.

This week we announced that the 13.04 build is available for download. New features include:

Added the oem installer, so no more preinstalled images!! Users can select their desired Language / Time Zone and Username

The ubuntu-installer-nexus7 was recently updated to rev 1.7 , this new version now flashes the 13.04 daily builds
For those of you that may not have the installer, you can go grab it @ https://launchpad.net/~ubuntu-nexus7/+archive/ubuntu-nexus7-installer

If some of you want to dist-upgrade from 12.10 -> 13.04 then you may hit some known issues.

Please refer to the following bugs:


These are the only bugs I found when dist-upgrading. We are urging everyone to re-flash if you don’t want to deal with the workarounds.

Serial Debug is a new feature that was recently added for 13.04, to enable and use, simply plug the usb cable into the Nexus7, connect to your computer and via a terminal type:

  • “screen /dev/ttyACM0 115200″

This should drop you into a login prompt. To kill, issue “ctrl-a k”

Refer to the wiki for more info @ https://wiki.ubuntu.com/Nexus7/


Categories: Linux Tags: , , , ,

Filing Bugs for Ubuntu on the Nexus 7

November 15, 2012 Leave a comment

Filing Bugs for Ubuntu on the Nexus 7

In recent news a custom build of Ubuntu has hit the internet for the Nexus 7. That means wiping android and testing out this fresh build natively on your tablet !!

With a growing number of users filing bugs everyday my co worker recently posted an awesome guide for those of you wanting to file bugs and contribute to the community. Check it out!

Categories: In General

Generating a clean MD5 Sum check file in python3

October 18, 2012 Leave a comment

This week I was stuck on a small problem involving me to generate hash sums for validation. Since I’ve been working on a automation project at work focusing on creating 100% hands free testing tools. A part of my test called for some basic procedures but I wanted to verify that the integrity of the data was sane. The original script that I was updating was written in Bash. Pretty much straight forward but yet, still room for improvement!  I decided to revise the script and convert it over to python, doing so would also make a more powerful tool giving the versatility that python has over simple bash scripts. src and dst are 2 parameters that are called elsewhere in the script. Essentially they are strings pointing to a path on your hard disk, for example dst = “/tmp/blah/blah/”

def prepimage(src, dst):
    Obtain sample files
    filename = "%s/md5sum.txt" % (dst)
    md5path = "%s/" % (dst)
    print ("Copying data and Generating md5sums")
    if not os.path.exists(dst):
        shutil.copytree(src, dst)

    #Generate md5sums
        list = subprocess.check_output(["ls", dst],universal_newlines=True)
        plist = list.split('\n')[0:2]
        f = open(filename, "wt")
        for item in plist:
           out = subprocess.Popen(['md5sum', item], universal_newlines=True\
                 , stdout=subprocess.PIPE, cwd='%s' % dst).communicate()[0]
    return 0

Lines 7 – 9 are simply creating my directory if it doesn’t exist.

We start @ Line 12,

list = subprocess.check_output(["ls", dst],universal_newlines=True)
        plist = list.split('\n')[0:2]

Using subprocess.Popen we kick of an “ls” command. dst is an argument that we set earlier pointing to a random directory. This will now give us output of something like this:

‘How fast.ogg\nJosh Woodward – Swansong.ogg\nmd5sum.txt\n’

the 2nd line will split the string using the delimiter \n to give us:

[‘How fast.ogg’, ‘Josh Woodward – Swansong.ogg’]

Now using this list, we can create a new file as I do in 14 and kick off a for loop to run md5sum against each entry in the list and write the output to our new file. The final output will look just like this:

cat /tmp/optical-test/Ubuntu_Free_Culture_Showcase/md5sum.txt 6e34a2a0eaa61748ba3a33015a84e813 How fast.ogg c9459a907b9345b289ba6c9e6517d4c2 Josh Woodward – Swansong.ogg

On the flip side, you can automate the integrity check by creating a new function and adding:

#Verify md5checksum
checkoutput = subprocess.Popen(['md5sum', '-c', 'md5sum.txt']
, universal_newlines=True, stdout=subprocess.PIPE\
, cwd='/media/CDROM/').communicate()[0]

Which should output:

How fast.ogg: OK

Josh Woodward – Swansong.ogg: OK



Python 3 also makes use of hashlib to generate the hashsum.. If you don’t need a checksum file then heres some alternate code you can use!

import hashlib
filename = "/tmp/file1.txt"
file = open(filename, 'rb')
filedata = file.read()
md5 = hashlib.md5()
md5sum = md5.hexdigest()
print (md5sum)

This would generate just the hashsums:


Connecting to an IRC server behind a firewall? I feel your pain!

September 29, 2012 Leave a comment

So I use Xchat daily and connect to a private IRC server to talk with my colleagues. I also have a BIP server in the office to record all of the IRC transcripts, this way I never miss any conversations regardless of the time of day. Because the BIP server is behind a firewall on the companies network I can’t access it from the outside.  For the past year I’ve been working around this by connecting to my companies firewall via ssh and creating a SOCKS tunnel then simply directing xchat to talk through my local SOCKS proxy.

To do this ,  open a terminal and issue:


Ex: ssh -CND sfeole@companyfirewall.com

Starting ssh with -CND:

‘D’ Specifies a local “dynamic” application-level port forwarding. This works by allocating a socket to listen to port on the local side, optionally bound to the specified bind_address. It also adds compression to the datastream ‘C’ and the ‘N’ is a safeguard which protects the user from executing remote commands. is my  IPv4 address

9999 is the local port i’m going to open and direct traffic through

After the SSH tunnel is open I now need to launch xchat, navigate to Settings -> Preferences -> Network Setup and configure xchat to use my local IP ( and local port (9999) then press OK then Reconnect.

I should now be able to connect to the IRC server behind the firewall. Usually I run through this process a few times a day, so it becomes somewhat of a tedious annoyance after a while.

Recently I finished a cool python3 script that does all of this in quick command.

The following code will do the following:

1.) identify the ipv4 address of the interface device you specify

2.) configure xchat.conf to use the new ipv4 address and port specified by the user

3.) open the ssh tunnel using the SSH -CND command from above

4.) launch xchat and connect to your server (assuming you have it set to auto connect)

To use it simply run

$./xchat.py -i <interface> -p <port>

ex: $./xchat.py -i wlan0 -p 9999

the user can select wlan0 or eth0 and of course their desired port. When your done with the tunnel simply issue <Ctrl-C> to kill it and wala!


#!/usr/bin/env python3
#Sean Feole 2012,
#xchat proxy wrapper, for those of you that are constantly on the go:
#   --------------  What does it do? ------------------
# Creates a SSH Tunnel to Proxy through and updates your xchat config
# so that the user does not need to muddle with program settings

import signal
import shutil
import sys
import subprocess
import argparse
import re
import time

proxyhost = "myhost.company.com"
proxyuser = "sfeole"
localusername = "sfeole"

def get_net_info(interface):
    Obtains your IPv4 address

    myaddress = subprocess.getoutput("/sbin/ifconfig %s" % interface)\
    if myaddress == "CAST":
        print ("Please Confirm that your Network Device is Configured")
        return (myaddress)

def configure_xchat_config(Proxy_ipaddress, Proxy_port):
    Reads your current xchat.conf and creates a new one in /tmp

    in_file = open("/home/%s/.xchat2/xchat.conf" % localusername, "r")
    output_file = open("/tmp/xchat.conf", "w")
    for line in in_file.readlines():
        line = re.sub(r'net_proxy_host.+', 'net_proxy_host = %s'
                 % Proxy_ipaddress, line)
        line = re.sub(r'net_proxy_port.+', 'net_proxy_port = %s'
                 % Proxy_port, line)
    shutil.copy("/tmp/xchat.conf", "/home/%s/.xchat2/xchat.conf"
                 % localusername)

def ssh_proxy(ProxyAddress, ProxyPort, ProxyUser, ProxyHost):
    Create SSH Tunnel and Launch Xchat

    ssh_address = "%s:%i" % (ProxyAddress, ProxyPort)
    user_string = "%s@%s" % (ProxyUser, ProxyHost)
    ssh_open = subprocess.Popen(["/usr/bin/ssh", "-CND", ssh_address,
                 user_string], stdout=subprocess.PIPE, stdin=subprocess.PIPE)

    print ("")
    print ("Kill this tunnel with Ctrl-C")
    stat = ssh_open.poll()
    while stat is None:
        stat = ssh_open.poll()

def main():
    Core Code

    parser = argparse.ArgumentParser()
    parser.add_argument('-i', '--interface',
                        help="Select the interface you wish to use",
                        choices=['eth0', 'wlan0'],
    parser.add_argument('-p', '--port',
                        help="Select the internal port you wish to bind to",
                        required=True, type=int)
    args = parser.parse_args()

    proxyip = (get_net_info("%s" % args.interface))
    configure_xchat_config(proxyip, args.port)
    print (proxyip, args.port, proxyuser, proxyhost)

    ssh_proxy(proxyip, args.port, proxyuser, proxyhost)

if __name__ == "__main__":

Refer to the launchpad address above for more info.


Get every new post delivered to your Inbox.

Join 164 other followers