Archives

All posts for the month December, 2012

This year, 2012, has seemed to drag by very slowly for me.  I thought it would be a great idea if the coming year could be cut up into small pieces.  Keeping with that spirit, I created a 2013 calendar that is a jigsaw puzzle.

2013 Jigsaw Calendar

The calendar was created using a Linux console command.   “cal 2013”  This gave me the text in monospace format.  I then took SVG designed jigsaw design and modified it to fit my needs.  The internal lines are lightly engraved to simulate different pieces.  You’ll have to click the full size image to see them as they are hard to see from the thumbnail.  The outside is then vector cut to produce a nice border.  The calendar text is then deep engraved into the 4mm ply to expose a darker lower layer.

I made two of calendars that were about 27x30cm on unfinished plywood.  Next time I think I’ll try a smaller version with dark stained wood.  With a light engraving, this should give a nice contrast.

 

Drivers – RTL2832U SDR

Before you run any software, you need to get the SDR device drivers.  For windows this is done by replacing the default TV driver using Zadig.   On Linux, rtl-sdr from OsmoSDR must be built from source.  This part was rather painless, though I do suggest using the non-root install option during cmake.

SDRSharp

SDRSharp or SDR# is a Mono/.NET application that is supposed to be cross-platform.   However, after downloading, I quickly found that Linux wasn’t very well supported.  To begin, the precompiled binaries threw exceptions and crashed.  Support posts suggested compiling from SDR# source. I grabbed the latest from SVN after installing a slew of build dependencies.  Then it is launched via mono SDRSharp.exe.  However, there are some license issues with the RTLSDR linkage that prevented the inclusion of the SDRSharp plugin needed to use my SDR.  Once you find the SDRSharp plugin, you need to edit SDRSharp.exe.Config to un-comment the plug-in.  Then links need to be made to the RTL-SDR libraries.  After that it runs… if you can call it that.

SDR Sharp UI Problems

SDR Sharp UI Problems

First, the UI was so laggy that it was totally unusable.  Two-five seconds delays when selecting options.  Note that there is white text on white backgrounds (see image above) and very small text that overlaps other controls.  After searching for 20 minutes, I found the only way to increase font size in mono was to lie to X11 and increase my system DPI settings.  This helped the smaller text, but didn’t fix the broken panel controls like frequency manager. (see image below)

SDRSharp - panel won't expand

SDRSharp – Look at bottom left, panel won’t expand

This was all running in a small window.  If I tried to maximize the application it basically locked up.  Audio was okay without shutter, but the mono UI was very broken.   Since it was Mono/.NET I tried this application on windows.  It ran without any issues on Windows.  It was smooth in fullscreen and reacted in real-time without even the slightest sign of lag.  Of all the other applications, this one was my favorite for easy of use and simple interface… when you can get it to work. 🙂

Result: Linux unusable broken UI, Windows – Great!

Linrad

Linrad screenshot

Linrad screenshot

Linrad (http://www.sm5bsz.com/linuxdsp/linrad.htm) is a no frills cross-platform SDR GUI.  It isn’t very user friendly or as intuitive as other programs.  Many of the functions are accessible only via keys that must find via the help and memorize.  Everything was draw using basic lines.  The spectrum display could desperately use some gradient or even solid fill to improve visibility.  I have rather poor eyesight which made the small fonts and single pixel lines too hard to see at high resolution.  While it did function for me, I found it too awkward to use and difficult for a beginner.

Result: User Interface awkward and too hard to use

GnuRadio

While GnuRadio isn’t what I would term a SDR scanner/browser, it does have a huge rage of functionality.  There are decoding plug-ins for a very wide range of signals.  Real-time decoding can be done via FIFO files.  I started trying Debian’s repository copy of gnuradio.  While it ran, it was missing any RTLSDR sources.  Checking the website revieled the need for a third party plugin gr-baz.   This then gave me problems since it refused to compile missing Gurel, which was installed but not the development versions.  That didn’t even appear to exist in Debian unstable.

More searching online to find additional solutions.  This time I tried using the building script suggested on the gnuradio wiki page.  I removed all repo versions of gnuradio binaries and let it run the script.  After running for 20 minutes and chewing up 750MB of disk space, I got this:

I reran with verbose and got

But I had python3.2 installed.  Sure enough there is a libpython3.2mu.so.  Turns out that gnuradio build/configure is broken.

Result: Failed to compile RTLSDR plug-in from source

Gqrx

Gqrx, website, looked like the perfect application for my Linux SDR problem.  The UI looked easy to use and not overly complicated.  The author suggest starting with the binaries first.  Which I tried to only find that they were compiled for GLIBC_2.15 when Debian unstable is still at 2.13.  Several minutes later, after finding tons of others complaints that Debian hadn’t updated, it seems that 2.14-2.16 were mostly updates for MAC/Windows and so they didn’t need to update.  This of course means tons of other apps are broken too.  (Like Steam)  Okay, so I said “lets try the source.”  I grabbed the latest versions and tried to install.  The website suggested having GnuRadio installed should work.  Maybe they meant the source version of GnuRadio  because I could never get it configured to find it my versions.  I even tried toying with the library paths of the qtcreator application.  I have my doubts that it would have worked anyway since I couldn’t get the required third-party plug-in for GnuRadio to work.

Result: Failed to compile from source

Summary

SDRSharp – 0/10 – UI too buggy and slow on Linux  – 8/10 on Windows
HDSDR – 0/10 – closed source with no Linux version – 5/10 Windows rather poor bitmap UI
Linrad – 4/10 – User interface awkward and too hard to use
GnuRadio – 0/10 – required third-party plug-in for SDR failed to compile
Gqrx – 0/10 – Failed to compile
QtRadio – 0/10 – too many dependencies that were not in distribution repositories

Excluding SDRSharp’s flawless performance on Windows, my results for trying to find SDR software on Debian Linux Wheezy were greatly disappointing.   Hours of trial and error wasted on what should have been a rather simple “configure/make/install” process.  The SDR drivers were working on Linux, but most of the applications had major issues.  My only solution right now is to reboot into windows and use SDR#.

network-offline

Once upon a time programs would ask your permission before using your resources.  The idea that a program would phone-home and connect to a remote system host would be appalling.  Today this practice is common place.  Applications do anything from just checking for latest versions to submitting tracking and usage metrics.  Wouldn’t it be great to have the ability to run an application or command without network access?

Thankfully, there is an easy way to do just this with Linux groups and iptables.  I’ve written small wrapper script that enables you to easily run a command or application without network access.

Some setup required

To make the magic work, a few things must be setup first.  Start by adding a nonet group and  remove the password.

Then you’ll need to add a iptables rule to reject all packets using that group id. If you’re running a Debian/Ubuntu distribution this can be accomplished via a script place in /etc/network/if-pre-up.d/nonet.

Wrapper script

The next step is my wrapper script.  For added safety, the script checks for a few conditions before running switch group.

Download: nonet

Download and install the above script in your path, $HOME/bin for example.  Make sure you chmod +x nonet first.  You’re then ready to run commands.

All child threads from the main parent will inherit the nonet group and therefore have no internet access.  This method can be expanded for additional permissions by using more groups.

 

LAN/Localhost only

This is an example of using the above method to allow localhost + local area network access only.  Use where you want an application to have access to say a local server, but not talk to the outside world.  Script is for /etc/network/if-pre-up.d/lanonly.

 

Project Omega Early Screenshot

Project Omega Early Screenshot

As I mentioned before when talking about low polygon artwork, making a your own game takes a lot of time and effort.  The actual worst enemy of a indie game developer is allowing feature creep to kill your project.  When I started “Project Omega” it had a very limited scope.  During my time working on the game engine programming, I kept adding new features and ideas that I may want to use at some point.  This of course caused the entire project to balloon out of control.  On the other hand, who doesn’t want to add cool new ideas to their product?   It’s hard to fight that temptation to make the best possible product or just deliver something with a workable scope.

Project Omega Different Planet

Project Omega Different Planet

The above screen shot shows an additional planet with different terrain, physics, temperature, obstacles and more details.  Actually, at this point I had made a framework and five planets.  Each one with a unique and different and atmosphere.  While this did add a lot to the game, it took a lot of time that kept me from working on my other areas.

Some of the features I have working:

  • Game Engine
    • Ogre3D C++
    • Bullet Physics
    • Open AL 3D Sound
    • Multi-state system with loading progress job manager
  • Real physics simulation on tank
  • Multi-factor weapon system with heat/energy/recoil for each type
  • Defense Towers with basic AI to track/lock on player
  • Multi-track music system
  • Menu navigation with world selector
  • Randomized worlds via coherent periling noise
  • HUD with zoom-scope view
  • Zoom-able minimap with radar
  • Particle systems with explosions
  • Entire system is mod-able via text .INI files
  • Text chat/system console with real-time engine controls
  • Multi camera style controller
Low poly missile tower

Low poly missile tower

I’m just a hobby indie game developer, but learning to integrate and develop this has been a fun learning experience.

To choose a good gift you need to personalize it to fit the person.  In this case, the person was very interested in Egyptian culture.  Building off of that idea, I set out to make something that looked Egyptian and could be useful.

After doing some research, I chose to do an Egyptian themed jewelry box.  I noticed a lot of styles that used dark colors with gold accent.  This led me to try a dark wood stain that is then engraved to reveal the lighter internal wood.   I used random hieroglyphics for the four sides.  On the top lid it has the eye of Horus since is watchful eye of the protector.  Under the eye I put the person’s name in hieroglyphics.

Egyptian Wooden Jewelry Box

Egyptian Wooden Jewelry Box

I used a new type of hinge that allowed for smooth rotation of the lid and added a spacer and red felt inside.

Egyptian Wooden Jewelry Box Inside

Egyptian Wooden Jewelry Box Inside

It’s not something that I think would sell because of the costs and time involved to produce.  But as a gift that wasn’t an issue.

Engraved Bamboo Spatulas

Engraved Bamboo Spatulas

Bamboo turns out to be a wonderful wood to work with on the laser.  I tested some bamboo spatulas with different ideas.  The only ones I could find had a wooden finger joint, seen in the picture as the dark stripes, in two places on the handle.  Bamboo also seems to be able to handle a good deal of engraving detail.

Engraving detail

Engraving detail

One of the biggest challenges of using a laser is learning how each material reacts.  Natural materials like wood and rocks are all different.  Even the same type material can have huge differences in density that can cause the same settings to come out differently.

I thought I would give thin natural wood cork a try.  While I think the engraving came out perfect, the cutting was a major disaster.  The cork burned and charred so badly that it made a mess to work with.  Although trying any less power and it wouldn’t cut through.  I think these would be great if I could find a way to cut them out without burring the edges.

cork coasters

Cork coasters laser engraved

Disclaimer, I’ve used the Aperture Science one a wee bit. 🙂

One of my rather frequent pastimes is playing video games.  And over the years I’ve played a lot of games.  Some really good ones and a lot of bad ones.  Often I’m left with the feeling that something should be done better.

Of course, getting from I want to make a game to actually having a finished product is another story.  It involves tons of work in different areas from programming, scripting, sound/music composition and graphics.  Games put a tremendous demand on computers to provide real time interaction.  Tricks are required to get things to look better than they really are.  Designers have been forced to use low polygon count models because graphics hardware couldn’t keep up.  This is the art of doing more with less, and it isn’t always easy.

This is one of my first attempts to take a high polygon model and do the same with less.  As you can see from the image, I went from 21,000 polygons to 2,000.

Low and high poly tanks

Low and high poly tanks

With the textures on each tank, you can’t tell that much is different without closely looking at both.  However, when compared to the raw mesh below, you can clearly see the difference.

Low and high poly tanks raw

Low and high poly tanks raw

Key areas include the tank road wheels, details on the main hull and turret and most of all the treads.  Textures add a lot to the render, but using a tangent normal map allows the lighting to provide even more hints that the model contains more geometry than it really does.

Learning to use Blender can be painful at times.  It is the best open source 3D graphics program for low poly modeling.  Still, I had fun learning how everything went together.  I think on my next attempt I can reduce the poly count down by another 20% for even more savings.

Making things can be a lot of fun.  Starting off with a vague idea of what you want and then being able to build and complete it is very rewarding.  I wanted to see if I could make a small piece of furniture for my home.  However, my laser cutter is only able to cut parts up to about 60cm in length.  So working with that in mind, I set off to build an end table.

I wanted to come up with something a little different and complex.  One idea came to mind was to use a construction site with support beams.

Table design

Table design

To enhance the contrast with the outside table, I went with a construction golden yellow color and black outside.  With a prototype design finished I cut the parts out of 3mm MDF.  This took much longer than I expected as each leg has 4 parts with numerous cuts required inside and joint tabs on the outside edges.

Table parts cutout

Table parts cutout

My plan was to cut, paint and then assemble the parts.  This was to save some on paint as there was a lot of surface area that I didn’t need painted.  However, it turned out that was much more work than I realized.  Note to self, paint then cut in future.

Finished table

Finished table

The final result was extremely strong and very light weight.  Perfect for those of us in Christchurch with all the aftershocks as it poses no danger if it falls over.  For protection I added a layer of varnish.  Although, next time I will use a stronger attachment for the legs.  Still, overall the table is very strong and is one of a kind.

There is just something special about a soft warm light that makes a room feel like home. Adding a lamp will work, but plain ordinary lamps don’t add as much to the atmosphere.

I set out to create a new design that would provide both warm soft light and a unique and interesting look. Using 3D software I created a unique design I called “The Wave Lamp.”

Wave Lamp Design

Wave lamp design

I then cut this design out of stained wood sheets. All parts are designed to interlock providing strength yet still very light-weight. This frame is then covered with a thin fire resistant paper. Inside is a low-wattage energy saving compact fluorescent bulb.

Wave Lamp off

Wave Lamp off

Wave Lamp On

Wave Lamp On

 

 

I think overall the project came out very well and has given me more ideas for different designs.

If you’d like your own, you can purchase them from my shop wave lamp.

CPU Fan Wire

Burnt ends

Thanks to a failed CPU fan that almost caused a fire, I decided to rebuild my website.  I haven’t really been sharing my adventures on my old one.  So with a new website it is a perfect time to start.

Like most, my intent is to keep it updated often.  How often that turns out to be remains to be seen.  But I have to start somewhere. 🙂  Please leave me some feedback and tell me what you think of not only the site, but my projects.