Archive for category Useful Information
2 Years of Lifereef
Posted by ekrunch in Fishy Fishy Fishy, Useful Information on July 16, 2009
It’s been two years since I set up the 90g tank, complete with Lifereef equipment. I didn’t really know much about Lifereef when I bought the tank, but my interactions with them have been nothing short of fantastic. In the past few years, i’ve had no problems with the system other than my ignorance of the hobby in general. The owner of Lifereef has always been responsive and helpful with every request I made. This is amazing considering I didn’t even buy the stuff from him directly… I got it second hand! I have ordered some additional equipment from Lifereef and everything has always been delivered as promised and the craftsmanship of the product is still fantastic.
Here’s to two years of a successful reef tank, powered by a Lifereef sump, skimmer, and refugium. Everything is still working like a champ, the tank looks great, and I couldn’t be happier with the service. Very nicely done Lifereef.
… Now it’s time to go clean all of the nasty fish poop out of that skimmer.
…
Adobe Flex, BlazeDS, and TIBCO EMS
Posted by ekrunch in Technology, Useful Information on March 22, 2009
I’ve searched high and low and can’t really find a good walk through on how to configure TIBCO EMS and BlazeDS. The documentation can also be a little gray on how to correctly use the JMS adapter so i’ve taken the liberty of putting together this little pictorial on how it’s done.
First things first, get yourself a fresh copy of Eclipse. For this setup, I used Eclipse Ganymede (3.4, J2EE Edition) on Windows. You’ll need the Java stuff in addition to Flex Builder because we’re going to launch our own tomcat inside of Eclipse instead of using BlazeDS Turnkey or any of those. Also, if you want to add in Java remoting later you’ll appreciate having the components already there.
Next, install the Flex plugin for Eclipse and update according. I downloaded and installed the Flex 3.3 SDK and changed my default SDK in the preferences. Once the eclipse platform is installed, updated, and configured the way you like it, let’s make a new project.
Note: Click any one of these images for the full size version.
Step 9 - Connect the project to your Tomcat server and select the blazeds.war that you downloaded from Adobe
First, let’s edit web.xml. This file should be okay out of the box. Here’s mine as a reference.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>blaze1</display-name> <context-param> <param-name>flex.class.path</param-name> <param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value> </context-param> <!-- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <!-- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <init-param> <param-name>flex.write.path</param-name> <param-value>/WEB-INF/flex</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- for WebSphere deployment, please uncomment --> <!-- <resource-ref> <description>Flex Messaging WorkManager</description> <res-ref-name>wm/MessagingWorkManager</res-ref-name> <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> --> </web-app> |
Now let’s edit services-config.xml. Key things to note here is that i’ve disabled the inclusion of the remoting-config.xml and the proxy-config.xml since i’m not using them. I’ve also changed the default AMF channel from “my-amf” to “AmfChannel1″ and updated the endpoint URL. Everything else is pretty much the same.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <!-- <service-include file-path="remoting-config.xml" /> <service-include file-path="proxy-config.xml" /> --> <service-include file-path="messaging-config.xml" /> </services> <security> <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/> <!-- Uncomment the correct app server <login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss"> <login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/> <login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/> <login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/> --> <!-- <security-constraint id="basic-read-access"> <auth-method>Basic</auth-method> <roles> <role>guests</role> <role>accountants</role> <role>employees</role> <role>managers</role> </roles> </security-constraint> --> </security> <channels> <channel-definition id="AmfChannel1" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/AmfChannel1" class="flex.messaging.endpoints.AMFEndpoint"/> </channel-definition> </channels> <logging> <target class="flex.messaging.log.ConsoleTarget" level="Error"> <properties> <prefix>[BlazeDS] </prefix> <includeDate>false</includeDate> <includeTime>false</includeTime> <includeLevel>false</includeLevel> <includeCategory>false</includeCategory> </properties> <filters> <pattern>Endpoint.*</pattern> <pattern>Service.*</pattern> <pattern>Configuration</pattern> </filters> </target> </logging> <system> <redeploy> <enabled>false</enabled> <!-- <watch-interval>20</watch-interval> <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file> <watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file> <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file> <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file> <watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file> <touch-file>{context.root}/WEB-INF/web.xml</touch-file> --> </redeploy> </system> </services-config> |
And last but not least, messaging-config.xml. This file is where the JMS connection is made to the TIBCO EMS server. And no, you do not have to put anything in context.xml when you’re doing it this way.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <?xml version="1.0" encoding="UTF-8"?> <service id="message-service" class="flex.messaging.services.MessageService"> <adapters> <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" /> <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> </adapters> <default-channels> <channel ref="AmfChannel1"/> </default-channels> <destination id="jmsDest1"> <properties> <jms> <!-- topic/queue --> <destination-type>topic</destination-type> <!-- What type of message we expect --> <message-type>javax.jms.TextMessage</message-type> <!-- This is the JNDI name of the topic/queue connection factory on the server --> <connection-factory>TopicConnectionFactory</connection-factory> <!-- This is the JNDI name of the topic/queue on the server --> <destination-jndi-name>testTopic</destination-jndi-name> <!-- Keep JMS headers when the message is delivered to Flex --> <preserve-jms-headers>true</preserve-jms-headers> <!-- If we're producing on this destination, what parameters should be used --> <delivery-mode>NON_PERSISTENT</delivery-mode> <message-priority>DEFAULT_PRIORITY</message-priority> <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode> <!-- The following lines are for the JNDI connection --> <initial-context-environment> <property> <name>Context.INITIAL_CONTEXT_FACTORY</name> <value>com.tibco.tibjms.naming.TibjmsInitialContextFactory</value> </property> <property> <name>Context.PROVIDER_URL</name> <value>tcp://localhost:7222</value> </property> <property> <name>Context.SECURITY_PRINCIPAL</name> <value>admin</value> </property> <!-- Uncomment if you have a password <property> <name>Context.SECURITY_CREDENTIALS</name> <value>password</value> </property> --> </initial-context-environment> </jms> </properties> <channels> <channel ref="AmfChannel1"/> </channels> <adapter ref="jms"/> </destination> </service> |
Now we have our Tomcat instance set up, time to import some class libraries.

Step 15 - Select the TIBCO EMS 5.x library directory and select all of the .jar files (There are more than what is pictured here)

Step 18 - Click the Servers tab that appeared at the bottom, highlight the Tomcat Server and click the Debug icon
Now jump back into Eclipse and set up the application. I started with a base form, added a text area and called it a day. Here’s the code to add in the message consumer, channel configuration, and event handlers.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="messageConsumer.subscribe()"> <mx:Script> <![CDATA[ // Import the required namespaces import mx.messaging.events.MessageEvent; import mx.messaging.events.ChannelEvent; import mx.messaging.messages.AsyncMessage; private function incomingMessageHandler(event:MessageEvent):void { logArea.text += (event.message.body + "\r"); } private function connectEventHandler(event:ChannelEvent):void { logArea.text += (event.channel.endpoint + " is now connected.\r"); } private function disconnectEventHandler(event:ChannelEvent):void { logArea.text += (event.channel.endpoint + " is now disconnected.\r"); } ]]> </mx:Script> <mx:TextArea id="logArea" editable="false" width="95%" height="95%"/> <mx:Consumer id="messageConsumer" destination="jmsDest1" message="incomingMessageHandler(event)" channelConnect="connectEventHandler(event)" channelDisconnect="disconnectEventHandler(event)"> <mx:channelSet> <mx:ChannelSet> <mx:channels> <mx:AMFChannel url="http://localhost:8080/blaze1/messagebroker/AmfChannel1"/> </mx:channels> </mx:ChannelSet> </mx:channelSet> </mx:Consumer> </mx:Application> |
That should do it for the code work … now for the fun stuff.

Step 26 - If everything worked, you should now be staring at the application and should have a message that the channel has connected.

Step 27 - Now send a text message to the JMS topic using your favorite JMS client and enjoy the result!
That should do it! Enjoy your new found JMS happiness. As a reference, a Channel is what the Flex application uses to communicate with BlazeDS and can be HTTP or AMF. A Destination is where you send the messages to and from. A lot of the examples i’ve found don’t show you how to declare what channel you’re talking to as it’s supposed to be handled automatically, i’ve found this to be unreliable and once I started specifying the channel everything started working flawlessly so i’m staying with it. Also, you can do multiple channels for redundancy and such, but that’s a lesson for another day.
Linksys WRT610N and IPv6
Posted by ekrunch in Personal, Rants, Technology, Useful Information on February 2, 2009
Thanks to the shoddy job that Linksys did with the WRT300N, I grudgingly purchased a new Linksys WRT610N. What a pleasant surprise! Finally another decent product from Linksys. Not that i’ve ever expected much from the bargain networking gear, but the WRT300N was very, very bad. Several of the features didn’t work consistently, new firmware was no where in sight, and the 802.11n was abysmal. The WRT300N made me regret ever upgrading from the WRT54GS, which was one of the best routers on the market and still is in the 802.11g game.
Fortunately the new WRT610N solves most of those problems. The simultaneous 2.4/5ghz radios make life really nice and performance is good. I’m now able to run all of my 802.11n gear on 5ghz while 802.11g stays on 2.4ghz. Each radio can also be restricted accordingly. Very handy. Well done Linksys. The updated features of the firmware are always welcome as well. More granular control over the system for those who need it definitely helps. And then there are those surprise features that we get from time to time.
I’ve recently started running IPv6 on my home network for the enhanced features that are offered. Things that were extensions in v4 are part of the standard in v6 and can make life nice, especially in high throughput situations. Imagine my surprise when I was updating my Ubuntu box and noticed that the WINE mirrors’ IP address was a v6 one! So apparently, the WRT610N does IPv6, it just doesn’t tell you! This is some scary stuff folks, imagine that modern operating systems come with IPv6 enabled and people go and buy this router, not knowing that their doors are now open via a whole new protocol. Granted, most home users will never know, but I seriously wonder if the firewall in the 610N has v6 support.
Let’s hope that Linksys is one step ahead of us here or a lot of users are about to get their horizons broadened when the hackers start coming in via IPv6.
For those who are unfamiliar with IPv6 and would like to know more, Ars Technica has a nice primer. Read more here.
Building MediaTomb for the Drobo using Ubunutu
Posted by ekrunch in Technology, Useful Information on December 30, 2008
Seeing as it constantly comes up on the Drobo developer forums, I thought i’d take the time to put in some work and compile MediaTomb for the DroboShare. For those of you who don’t know, DroboShare is a NAS device that attaches to the Drobo and allows for the device to be used over the network instead of direct USB connections. The beauty of the DroboShare is that it’s an embedded Linux machine with an ARM processor and shell access. Gotta love that! The default media server on the Drobo forums is FUPPES. No offense to it’s author, but I really can’t stand using it.
It seems slow and I really dislike the interface. I also don’t like the amount of configuration that it takes to get it to work with my Xbox 360 so I decided to do MediaTomb instead.
The first part of this is going to require a working Ubuntu 8.10 installation. I use Kubuntu 8.10 as my desktop OS so I already had this part covered.
You can also use a VMware image if you don’t have a Ubuntu Linux machine around. Everything is done in a chroot environment and can be easily deleted after the software is compiled and uploaded to the DroboShare.
First, let’s create the jailed environment.
sudo mkdir -p /var/chroot/drobo
Install schroot (you can also use chroot if you’d like) and debootstrap
sudo apt-get install schroot debootstrap
Create the file /etc/schroot/chroot.d/drobo with the following contents
——– /etc/schroot/chroot.d/drobo ——–
[drobo] description=Ubunutu Intrepid for DroboApps location=/var/chroot/drobo priority=3 users=<Your Username> groups=sbuild root-groups=root
——– /etc/schroot/chroot.d/drobo ——–
Create a minimal system in the chroot jail
sudo debootstrap --variant=buildd --arch i386 intrepid /var/chroot/drobo
Create a place to extract the new downloads
sudo mkdir /var/chroot/drobo/root/code
Download the Drobo toolchain to a temporary directory
http://www.codesourcery.com/gnu_toolchains/arm/releases/2006q1-6
(Select ARM GNU/Linux, then IA32 GNU/Linux, then click Download)
Extract the Drobo toolchain
cd /var/chroot/drobo/usr/local sudo tar xfj <DownloadDir>/arm-2006q1-6-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
Download MediaTomb
Grab a copy from here : http://mediatomb.cc/pages/download#source_code
Extract the files into the chroot
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/mediatomb-0.11.0.tar.gz
Because i’m building MediaTomb, i’ll need SQLite, ZLib, expat, and a few other things … Let’s start with SQLite
Grab a copy from here : http://www.sqlite.org/download.html
I used ’sqlite-amalgamation-3.6.7.tar.gz’
Extract to the code directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/sqlite-amalgamation-3.6.7.tar.gz
ZLib – http://www.zlib.net/
I used ‘zlib-1.2.3.tar.gz’
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/zlib-1.2.3.tar.gz
Expat – http://sourceforge.net/projects/expat/
I used ‘expat-2.0.1.tar.gz’
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/expat-2.0.1.tar.gz
File – http://www.darwinsys.com/file/
Note : The site admin removed the 4.24 version of file so I had to get mine from here
ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/file-4.24.tar.gz
I used ‘file-4.24.tar.gz’
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/file-4.24.tar.gz
TagLib – http://developer.kde.org/~wheeler/taglib.html
I used ‘taglib-1.5.tar.gz’
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/taglib-1.5.tar.gz
libexif – http://libexif.sourceforge.net
I used ‘libexif-0.6.17.tar.gz’
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfz <DownloadDir>/libexif0.6.17.tar.gz
ffmpeg – http://ffmpeg.org
FFmpeg doesn’t really do releases so I used a snapshot from a Gentoo mirror. The filename was ‘ffmpeg-0.4.9-p20081219.tar.bz2′ and I got it from http://gentoo-distfiles.mirrors.tds.net/distfiles/ffmpeg-0.4.9-p20081219.tar.bz2
Extract to the directory
cd /var/chroot/drobo/root/code sudo tar xfj <DownloadDir>/ffmpeg-0.4.9-p20081219.tar.bz2
Create a directory for the resulting binaries.
sudo mkdir -p /var/chroot/drobo/usr/arm
Now it’s time to enter the chroot jail and start compiling!
Mount the required filesystems
sudo mount -o bind /proc /var/chroot/drobo/proc sudo cp /etc/resolv.conf /var/chroot/drobo/etc/resolv.conf
Activate the chroot
sudo schroot -c drobo -d /root
Load some extra packages
apt-get install vim
(Feel free to use whatever editor you like in place of vim)
apt-get install automake autoconf libtool autotools-dev m4
Setup some environment variables. The trick to cross-compiling is to use the system’s binaries for running autotools but tell the compiler to link against the ARM headers, libraries, and binaries. These environment variables ease the pain when building in a non-standard directory. If they’re not set, a few of the below builds will fail miserably.
Seeing as we know the CPU/Architecture of the Drobo and the version of GCC, a quick check of the docs gives us some additional command line switches to further tweak things for our processor. The Drobo is no speed demon so everything helps.
export CFLAGS="-I/usr/arm/include -march=armv5te"
export CPPFLAGS=${CFLAGS}
export LDFLAGS="-L/usr/arm/lib"
export CC=arm-none-linux-gnueabi-gcc
With that out of that way, let’s build some software! ZLib is up first
cd /root/code/zlib-1.2.3 ./configure --prefix=/usr/arm --shared make make install
Now Expat
cd /root/code/expat-2.0.1 ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm make make install
SQLite
cd /root/code/sqlite-3.6.7 ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm make make install
File proved to be a bit more tricky, but nothing too horid…
cd /root/code/file-4.24
Edit magic/Makefile.am
vi magic/Makefile.am
Change line 224 from
${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE)
to
${MAGIC}: $(EXTRA_DIST)
Now run the following to rebuild the build system …
aclocal autoheader autoconf libtoolize automake ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm make make install
Libexif
cd /root/code/libexif-0.6.17 ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm make make install
Taglib time!
cd /root/code/taglib-1.5 ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm make make install
Hold on to your cookies … it’s time for ffmpeg. This is a seriously daunting command line but I have a feeling that this version is broken when cross compiling. Who knows what the problem is … this build works, just no Matroska.
cd /root/code/ffmpeg ./configure --cross-prefix=arm-none-linux-gnueabi- --prefix=/usr/arm --arch=arm --enable-armv5te --enable-nonfree --disable-network --disable-ipv6 --enable-pthreads --disable-zlib --disable-bzlib --disable-ffserver --disable-ffplay --disable-devices --disable-encoders --disable-muxers --enable-shared --disable-static --disable-vhook --enable-avfilter --enable-cross-compile --disable-decoder=matroska make make install
MediaTomb leaves a lot to be desired when it comes to properly detecting items in a cross-compiled environment. It also looks like some of the distributions move header files around… which of course breaks it further.
The following hack fixes it up for us to use again.
mkdir -p /usr/arm/include/ffmpeg cp -v /usr/arm/include/libavcodec/* /usr/arm/include/ffmpeg cp -v /usr/arm/include/libavutil/* /usr/arm/include/ffmpeg cp -v /usr/arm/include/libavformat/* /usr/arm/include/ffmpeg cp -v /usr/arm/include/libavdevice/* /usr/arm/include/ffmpeg cp -v /usr/arm/include/libswscale/* /usr/arm/include/ffmpeg
Last but not least … MediaTomb! Time for some build system hacking again.
Enter the code directory
cd /root/code/mediatomb-0.11.0
Hack up the configure script a little.
vi configure.ac
Change the following line numbers.
2378, 2395, 2402, 2418
On each of those lines, you’re going to see the following section
"-lavformat -lavutil"
With this version of FFmpeg, a
"-lavcodec"
is needed. Here’s how mine turned out.
Line 2378
FFMPEG_LIBS="-L$FFMPEG_SEARCH_LIBS -lavcodec -lavformat -lavutil -lz"
Line 2395
FFMPEG_LIBS="-lavcodec -lavformat -lavutil"
Line 2402
FFMPEG_LIBS="-L$SEARCH_DIR_LIBS -lavcodec -lavformat -lavutil -lz"
Line 2418
FFMPEG_LIBS="-L$SEARCH_DIR_LIBS -lavcodec -lavformat -lavutil -lz"
Now it’s autotools time again.
aclocal autoheader autoconf libtoolize automake ./configure --host=arm-none-linux-gnueabi --prefix=/usr/arm --disable-external-transcoding --enable-ffmpeg --with-taglib-cfg=/usr/arm/bin/taglib-config --disable-libjs --disable-rpl-malloc --with-ffmpeg-lbs=/usr/arm/lib --disable-inotify --disable-mysql make make install
If all went well, you should see the following output
CONFIGURATION SUMMARY ---- sqlite3 : yes mysql : disabled libjs : disabled libmagic : yes inotify : disabled libexif : yes expat : yes id3lib : disabled taglib : yes ffmpeg : yes external transcoding : disabled libextractor : disabled
Okay, now to create the required scripts, tar it up and send it to the Drobo! I’ve attached them here as text files and also as a ZIP file all of the necessary files.
The following two files go in the
/usr/arm
directory
mediatomb-stop.sh
mediatomb-start.sh
The following file goes into the
/usr/arm/config
directory. This directory does not exist in the default MediaTomb setup, just create it and put the file in there. This is the default configuration that MediaTomb creates on first startup except that the paths have been modified to work on the DroboShare. This file will definitely need some more tweaking.
config.xml
This ZIP file contains all of the original files in their original form. Just unzip this file to /usr/arm and move the configuration file to /usr/arm/config
configs_for_mediatomb.zip
Almost home … just create the Tarball
cd /usr/arm tar cvfz ../mediatomb.tgz *
Now exit the chroot jail and upload
/var/chroot/drobo/usr/mediatomb.tgz
to the Drobo. For more information on how to add applications to the DroboShare, check out the DroboSpace site.
Stupid Aquarium Tricks – Part 2
Posted by ekrunch in Fishy Fishy Fishy, Useful Information on November 11, 2008
In what can only be referred to as a ridiculously long time in between updates, I proudly present you with Stupid Aquarium Tricks Part 2. Finally, an update to the original SAT. Without further ado, here we go!
Q) What kind of pump should I run? Internal or External?
A) External if you can. I was originally intimidated by external pumps due to the plumbing requirements and leaking possibilities. After sticking with internal pumps (Mag-Drive, Eheim, Rio, etc) for a while, I have finally made the leap to external. Sure, it’s more plumbing, but i’m getting more than double the output on my Reeflo Dart than I was on my Mag 18 for about the same power draw. I also have a lot more capability with that pump and it adds less heat into the water. I won’t say it adds no heat to the water, but i’ll definitely say less.
Q) What kind of circulation pumps should I run?
A) None! Build a surge and/or a closed loop! After several iterations of circulation pumps (Tunze, Seio, Hydor, etc) I can safely say that they all suck! The nice ones are certainly not a cheap solution and although they seem to do a good job, it’s nothing compared to what even a small surge device can do. Toss in the required controller to make the Tunzes really do their thing and the cost of a surge and/or closed loop is negligible. Let’s do the math, i’ll grab some prices from MarineDepot…
- 2x Tunze 6125 pumps – $535.78
- Tunze 7095 controller – $270.27
Total for the circulation pump solution… $806.05! Yeah, almost a grand for two little pumps and a controller.
Now let’s do a closed loop with a wicked OceansMotions 4-way on it for that nice random flow effect.
- Reeflo Dart – $259.99
- OceansMotions 4-way 1.5″ x 4x 1″ with #3 Drum (Source : OceansMotions) – $389.00
Total for the Closed Loop solution… $648.99. Almost two hundred dollars less! You could actually toss in another small pump and a surge device and still be around the same price as the circulation pump setup.
Just remember… most circulation pumps will add heat to the water, provide a very directional and laminar flow pattern, and have to be cleaned a lot. Also remember that circulation pumps leave you staring at this ugly black/grey plastic pump in the middle of your nice reef tank.
Closed loops have to be cleaned as well, but they’re not nearly as horrid about it from what I can tell. Just make sure that when you plumb a closed loop that you use unions and valves so you can remove it for when you have to clean it!
Q) Where should I put my tank? I’d like to put it right up against the wall so you can’t see behind it!
A) Remember, if you can’t get behind the tank, you can’t WORK ON IT. Think long and hard about this one because once the tank is in place and full of livestock it’s nearly impossible to move! Tanks belong 12+ inches from the wall, especially if you’re running closed loops or you’re plumbing your returns up the back of the tank.
Q) How does Kalkwasser work?
A) I won’t go into the dynamics of how Kalkwasser actually works, there are plenty of articles on that. The basic thing is that you mix the Kalkwasser powder with fresh water and drip it into your tank. The solution that is created is high in pH and very rich in Calcium. Some people use their ATO to push Kalk into the system, but I highly discourage that. Quit being cheap and get a separate container to run your Kalk in… then drip it into the tank. Running it through your ATO is disastrous when your evaporation rate increases or you do a water change and don’t put enough water back in the tank. When the ATO kicks in to compensate you get a large dose of water that’s 14pH into your reef. Next thing you know, you’re sitting at a 9+ pH and hoping everything survives. Trust me on this one, it’s worth the secondary chamber (like a Kalk reactor) or a simple bucket drip setup.
Q) Kalkwasser sounds dangerous! Is it worth it?
A) Absolutely. Just go read up on it and learn from the mistakes of others. Kalkwasser is a really inexpensive way to supplement the water in your reef and it does work quite well. Just be prepared to set it up properly.
Q) PVC pipe is hard to work with, should I use flexible tubing?
A) No! You should learn to plumb and/or get help from friends! Trust me on this one. Flexible PVC is one thing, but the tubing stuff can be very restrictive on flow. Not to mention the fact that it’s clear and builds up algae inside of it really fast. I’ve gone down the flexible tubing road a few times because it was so easy to deal with, only to realize the error of my ways later on and regret it. The simple reality is that PVC takes a little practice, but it’s cheap so you can afford to make a few mistakes.
My most recent UPS experience
Posted by ekrunch in Personal, Rants, Useful Information on July 3, 2008
Has anyone noticed a steady decline of service quality in UPS here lately? My last few run-ins with UPS have not been pleasant.
The last major item that came in via UPS was a server that I purchased. It was damaged… I know the box was heavy and all but it had obviously been dropped on its corner. It was wet outside that day and I could see the water on the corner so I assume it happened on the way up to my door. No major damage, just the face place. Bummer. The next week the rails for the server came in and the box for them had suffered the same fate. The sad part… both packages were packed by “professionals” at the UPS store and shipped to me in UPS boxes packed by UPS employees. Pitiful.
I recently had to send my Xbox 360 back for service due to my run in with the Red Ring of Death. The UPS guy showed up with the empty box that Microsoft sends you and we both had a good chuckle because he already knew I had a dead console based on the address of where it came from and the fact that it was empty. He smiled and said he’d see me in a few weeks when they returned the console in that same box. Off to UPS my Xbox 360 went and one week later I get a notice from MS saying that it has been shipping back. (48 hour turn around, bravo Microsoft Xbox service center!)
Now I’m excited… I’m ready to have my Xbox 360 again. And here’s where the drama begins.
- 07/02/2008, Afternoon some time – I receive a call from an unfamiliar number. It’s an automated message from UPS saying I have a package arriving tomorrow that will require a signature. I jump online and look at the tracking number Microsoft gave me. Sure enough, it’s my Xbox. Now i’m really excited.
- 07/03/2008, 08:00 – I’m at home, waiting for my Xbox.
- 07/03/2008, 10:00 – I decide to track my package. I get the weirdest message… something is wrong with the label on the package but apparently it has been repaired. The package no longer has a delivery date and says “Exception” instead. Weird, but okay, whatever.
- 07/03/2008, 11:20 – I track the package again. The package is now back to normal status… to be delivered on Monday! Too bad i’m going to be out of town all next week and i’m already sitting on my tail at home waiting for this package. No big deal. I’ll just call UPS and set it up for a “will call” pickup.
- 07/03/2008, 11:23 – I call UPS. I get a really nice lady who tells me that she’ll have someone from the Palatine, IL center call me back within one hour with a status as to when I can pick my package up. Now i’m happy again. Nice lady too.
- 07/03/2008, 11:37 – Marie from Palatine center calls me. Wow! Fast response! Go UPS! But wait… The package never made it to Palatine this morning. It must be on the truck! Marie tells me that she’s going to find out and she’ll call me back. No problem. Now we’re getting somewhere and maybe the web site is just out of date. If a UPS Representative is reading this post, Marie was a really nice lady as well. She really was making an effort to help… read on for the part where the experience goes bad.
- 07/03/2008, 11:45 – Once again, super fast response from UPS Palatine. They’re either really good or really bored.
Either way, i’m happy that they’re being so responsive. Marie tells me that the package is not on the truck nor in Palatine and that I can expect it Monday. If nothing else, call her and she’ll put the package on hold in Palatine and I can pick it up when I return. I’m a little angry at this point because i’ve now stayed at home today waiting for them. If I worked a normal desk job i’d have had to have taken off of work and would be pissed that my package didn’t show. But whatever, okay. I’ll figure something out. - 07/03/2008, 12:03 – I decide to call UPS corporate back and have them track my package. Them not being able to tell me where it is right now is unacceptable. They really need to at least provide me with a current location of the package because it should be in Palatine. I get another nice lady at UPS corporate. I tell her the story and that neither Palatine nor the driver have it and I would like to know the location and expected delivery date so that I can make arrangements for someone to be home to sign for it. She tells me that it’s not a problem and she’ll have someone from the main Chicago center call me. It must be there still.
- 07/03/2008, 12:27 – UPS Palatine calls again. Wait? UPS Palatine? Why would they call me. I was expecting a call from Chicago center. Hmmmmm… Okay. It’s not Marie this time. It’s some other lady that I didn’t catch her name. She was talking too fast and in a very abrasive tone. She “informs” me that she was sitting next to Marie when I was on the phone and that there’s nothing else she can do. She then tells me that my package should go out on Monday and that I need to call by 07:30 on Monday morning if I want to have them pull it from the truck for a Monday will call. I started to explain to her that I wouldn’t be in town but decided to just save it because she’s obviously angry at me for calling again and isn’t going to help me. She was quite possibly one of the rudest customer service representatives that i’ve ever spoken to.
- 07/03/2008, 12:35 – The second time I called UPS, the lady told me that i’d have to call the sender of the package to escalate any further. It was a nice way of telling me to stop calling and that they weren’t going to help me anymore. So, that’s what I did. I called Microsoft. Unlike my first experience with Xbox 360 support, I get a really unfriendly individual with poor english skills. Oh joy… i’m screwed. I explain the situation. The first thing he does it try to give me the UPS tracking number and disconnect the call. I explain that I have the tracking number and I need Microsoft to escalate with UPS. He then proceeds to track the package himself and tells me that it will be here tomorrow. I try to explain again. He tells me he’s going to let me talk to his supervisor. After almost 15 minutes of holding, he returns… no supervisor on the phone. He then trys to give me the URL to get to UPS and track the pacakge. I explain to him that i’ve already done it. He tells me “but the status was updated 10 minutes ago!”. I jump on and check and no, it wasn’t… he’s in a different time zone and doesn’t realize that the web site isn’t updating for his timezone. I explain to him that it’s in central time, not wherever he is. That update was 1h10m ago, not 10m ago. Oh joy… I have one of “those” customer service representatives. We go back and forth for a few mintues with him insisting that my Xbox will be at my home tomorrow. I explain that tomorrow is a holiday and he just does not get it. I guess when you don’t celebrate Independence Day as a good US citizen should, you wouldn’t know that. He tells me that he’s going to go talk to his supervisor again, after another 10 minutes, I hang up.
Do I have a right to be angry? I think I do. UPS called me and said I needed to be here. I stayed home and waited, only for them to say that something is wrong with the label. It made it all the way from Texas to Chicago before somebody noticed the label? It was supposedly illegible. Funny… it was legible when they used it to look up my customer record for my phone number.
My other concern is that they can’t find the package and aren’t willing to help me track it. I wonder who’s kid just got a repaired Xbox 360. Only time will tell but it bothers me that UPS employees know the box and address of repaired Xbox 360’s that well. Even the UPS Corporate lady made a joke about it.
Maybe i’m over reacting here but damn… what an annoyance. A total array of cluster f*** just to get an Xbox shipped from Texas to Chicago. Time to find a new shipping carrier.
Okay quick, everybody buy HD-DVD players and movies
Posted by ekrunch in Rants, Technology, Useful Information on March 18, 2008
What do I have against Blu-Ray? SONY! That’s what. They own the technology, all of it. What does that mean for consumers? Licensing… lots and lots of licensing. Expensive players, expensive movies, etc. Sony knows this, most consumers apparently don’t.
I figure that we’ve got one shot left for HD-DVD and to not be stuck with Blu-Ray. That shot is to buy HD-DVD. Everybody, go find an HD-DVD player… buy it. Go find HD-DVD movies… buy them. Then wait. The technology is open, somebody will pick it back up and make it.
Let’s take our market back! If Sony REALLY wanted to do something good, they should give Blu-Ray to the DVD forum. Then i’ll buy one. Until then, forget it.
GO HD-DVD!
I almost quit the hobby last night!
Posted by ekrunch in Fishy Fishy Fishy, Rants, Useful Information on January 10, 2008
I almost quit the hobby last night! I was working on my new MTC PROCAL reactor and noticed a leak in the main chamber seal. I shut the reactor pump off and was fiddling around with those annoying little screws and decided to go ahead and pull it out of the stand.
Wouldn’t ya know, I managed to find the only piece of tubing that didn’t have a clamp on it! (Lesson 1 : Tubing is easy, PVC doesn’t come loose) Apparently I neglected to go back and clamp that one piece of tubing on that end. What a dumb mistake and a testament to why one shouldn’t get in a hurry when building a tank… needless to say, I knocked the drain hose off with a big reactor in my hands.
Water is now going EVERYWHERE. I scrambled to get the reactor back on the ground, grabbed the hose and got it back on the bulkhead. As i’m walking away to go get an army of towels, the pump runs dry. Enough water had run out of the tank to successful drain the pump chamber. And then… I start to hear the inevitable “sizzle” sound from a surge protector that had gotten wet. Any body want to guess where a large portion of my electrical was sitting? Fortunately, all of the GFCI actually worked and everything shut down. (Lesson 2 : GFCI. Always, Always, Always)
Now here’s where it gets interesting. Just when I thought I had it back under control…
I get all of the affected electrical out of there and start soaking up water. During that process, I managed to KNOCK OFF THE CANOPY! Okay, so apparently, my canopy has no nifty piece of wood on the back to prevent it from sliding forward off of the tank! (Lesson 3 : If your canopy will slide off of your tank with just a push, FIX THAT ASAP)
What a mess… i’m standing there, wedged behind my tank, holding on to my canopy that’s loaded with expensive lighting and reflectors. Anybody want to guess where I set my new electrical stuff that I was about to install? You guessed it! On top of the canopy! Seeing as the canopy is now at a 45 degree angle, everything has now slid off… into my ATO reservoir, which I just moved to the front of the tank so I could get behind there. (Lesson 4 : 12″ from the wall is NOT far enough, you will need more space! Deal with the look of it or run a smaller tank that you don’t need to get behind!)
So I have now managed to ruin my old electrical stuff as well as my new electrical stuff, gotten water all over the floor, and have no idea what equipment works and what doesn’t. I got the circ pumps back up, set two of them to break the surface tension, tossed in a heater and WENT TO BED. (Lesson 5 : If you’re that tired, you’re probably doing more harm than good)
Insert 8 hour sleep break here
I have now spent the better part of the morning putting everything back together, all of the “core” equipment is working but I have yet to test the calcium reactor, ATO, etc… my 3 IceCap 660’s survived the splashing and all of the bulbs survived. Even my moonlight LEDs made it. I’m not sure about the reactor pump just yet, but I consider that a minor loss if I have to buy a new one. That last piece of flexible tubing is now CLAMPED in place. (Lesson 6 : Using Flexible tubing as PVC elbows is a neat concept but turns out to be a big PITA in the end)
So, that’s the end of my story. I was ready to start bagging livestock and taking it to the various stores. But man… i’m sooooo close. I can’t help but love this hobby. I’ve invested all of this time and money to get it running, and now i’ve learned yet another lesson that will make my next tank even better!
I’m still in the fight, but wow did I want to quit.
Let me summarize all of this into one small, informative list and add one more…
Lesson 1 : Tubing is easy, PVC doesn’t come loose
Lesson 2 : GFCI. Always, Always, Always
Lesson 3 : If your canopy will slide off of your tank with just a push, FIX THAT ASAP
Lesson 4 : 12″ from the wall is NOT far enough, you will need more space! Deal with the look of it or run a smaller tank that you don’t need to get behind!
Lesson 5 : If you’re that tired, you’re probably doing more harm than good
Lesson 6 : Using Flexible tubing as PVC elbows is a neat concept but turns out to be a big PITA in the end
Lesson 7 : Big calcium reactors are freakin’ cool… After all of this crap, i’m staring at my PROCAL going “Wow… that’s just cool”
High Quality Vendor – Lifereef Filter Systems
Posted by ekrunch in Fishy Fishy Fishy, Useful Information on October 10, 2007
When we got the 90g tank, it came with a Lifereef LF1-125 Berlin system. This was a great deal for us because we had heard of Lifereef and heard it was good, and it saved us from having to go find a pump, sump, and refugium.
Being relatively new to the hobby, I didn’t really know how to hook up all of that stuff, so I took a chance and sent an email to Lifereef. I got a response from them requesting a model number and telling me where to look to find it. Within a few hours, I had the instructions faxed to me and I was up and running that night. That was my first interaction with them.
Later on, I had some more questions about how I should design my new system that i’m building… I fired off an email to Lifereef to see what they offer. Once again, I received a thorough response showing me their offerings and some realistic suggestions. It’s nice to work with a vendor that’s not all about pumping their products.
So anyway, more Lifereef equipment is on it’s way to my house and I just can’t wait.
Hats off to Lifereef Filter Systems. Check them out their web site and shop with confidence. Lifereef Filter Systems is a high quality vendor with a great product and the willingness to back it up!
Product Review – R2 Extreme LED Moonlight
Posted by ekrunch in Fishy Fishy Fishy, Useful Information on September 12, 2007
The quest for moonlight in the fish tank rages on. A reef is great and all… when you can see it! Not having moonlights in there is doing yourself an injustice. I was against it at first because it seemed rather silly, now I can’t live without it.
When I first got the Current USA fixture, the moonlights feature just didn’t matter to me… until the first night. My aquarium came alive with lots of little nocturnal things. Some of them are out during the day, but definitely not all of them. And the glitter lines of LED moonlights are neat for those of us without point source lighting like Metal Halide.
On to the review… the new 90g tank now has it’s new lighting system, but it needed some moonlights. I did some shopping through the various LFSs and came up dry. A little reading and searching and I came across the R2 Extreme LED Moonlight. It looked good on the web site and seemed to get good reviews… so I ordered one and installed it.
First impressions : You’re kidding… right? I got the unit with 2 LED cylinders and the single power brick. It comes with a cheesy Y-cable that looks like it just rolled out of the bargain bin at Radio Shack! Same thing for the power brick and power switch. Not that I really care that much, but in the aquarium world… exposed metal is a BAD then when it comes to power. A little plastic shielding goes a long way guys. For $40+, a little engineering on the power cord side would be great.
Mounting Setup : Adequate. Nothing fancy, but very usable. It comes with double stick tape and screws so it should suit just about everyone’s mounting needs. I highly recommend powering it up and moving things around a few times to get the lighting position right. For me, right was under the front lip of the canopy mounted horizontally with the LEDs angled slightly towards the center of the tank. Another gripe here is the relatively short length of the crappy Y-cable. It limits how far apart you can place the LEDs. I may have to hunt down another power brick and ditch the Y-cable.
Power On : WOW! Now this is what i’m talking about! Damn… these things are bright and the color is amazing. The glitter lines are really good as well. Very nice and it gets great coverage in the 90g. I tested out the other set on my 46bf tank with similar amazing results. Can’t wait to get them on that tank as well… the old Current moonlights just don’t seem the same anymore. My 46bf looks horrible in comparison to the 90g now.
Overall Recommendation : Buy with Caution. It’s a good product but it definitely has a little bit of growing to do in order to become a great product. If you know your way around AC power, you could easily make up some custom cables to solve the problems that the included ones have. I’m definitely considering a run to Radio Shack or Frys tomorrow for some ends and cable to make my own.






















Recent Comments