<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.1">Jekyll</generator><link href="https://anodetome.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://anodetome.com/" rel="alternate" type="text/html" /><updated>2022-01-17T11:01:22-05:00</updated><id>https://anodetome.com/feed.xml</id><title type="html">An Ode To Me</title><subtitle>A blog about things that I find interesting.  It gets updated when I get around to it.</subtitle><entry><title type="html">New Year New Post</title><link href="https://anodetome.com/2022/01/16/new-year-new-post.html" rel="alternate" type="text/html" title="New Year New Post" /><published>2022-01-16T09:43:00-05:00</published><updated>2022-01-16T09:43:00-05:00</updated><id>https://anodetome.com/2022/01/16/new-year-new-post</id><content type="html" xml:base="https://anodetome.com/2022/01/16/new-year-new-post.html"><![CDATA[<p><img src="/assets/content/kelly-sikkema-PXl_S152jNM-unsplash.jpg" alt="" /></p>

<p>2021 was an interesting year.  Another year of the pandemic.  A year of uncertainty and shortages.  I bid thee good riddance.  On to 2022!</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Frameworks are for Winners</title><link href="https://anodetome.com/2016/09/15/frameworks-are-for-winners.html" rel="alternate" type="text/html" title="Frameworks are for Winners" /><published>2016-09-15T00:00:00-04:00</published><updated>2016-09-15T00:00:00-04:00</updated><id>https://anodetome.com/2016/09/15/frameworks-are-for-winners</id><content type="html" xml:base="https://anodetome.com/2016/09/15/frameworks-are-for-winners.html"><![CDATA[<p>A friend of mine showed me this blog post from forever and a day ago as a summation of his reasoning why frameworks are for losers. <a href="http://discuss.joelonsoftware.com/?joel.3.219431.12" target="_blank" rel="noopener noreferrer">http://discuss.joelonsoftware.com/?joel.3.219431.12</a></p>

<p>My thoughts go more along the lines of “I need to build a spice rack, and I only have pieces of wood. I need to fasten them together and there are several ways to do this. I don’t really want to kill the horses and make glue, I don’t want to smelt iron for the nails/screws, what do i do? I go to my handy toolbox, which happens to have many tools which have been refined over the ages and then I pick the tool which will get the job done with the least effort. Sure there are more tools than I need, but at least I know I am not going to make a nail out of the wrong material and expose some structural weakness in my application of the tools”</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[A friend of mine showed me this blog post from forever and a day ago as a summation of his reasoning why frameworks are for losers. http://discuss.joelonsoftware.com/?joel.3.219431.12]]></summary></entry><entry><title type="html">Robust Queue</title><link href="https://anodetome.com/2015/09/30/robust-queue.html" rel="alternate" type="text/html" title="Robust Queue" /><published>2015-09-30T00:00:00-04:00</published><updated>2015-09-30T00:00:00-04:00</updated><id>https://anodetome.com/2015/09/30/robust-queue</id><content type="html" xml:base="https://anodetome.com/2015/09/30/robust-queue.html"><![CDATA[<p>Queues have a tendency to get unruly. Whether it is a human queue, or a job queue in code, it does not matter. Without some planing and thought into the queue, you can end up with chaos. This goes doubly for non-linear code, where there can be multiple workers taking jobs off the queue.</p>

<p><img src="/assets/content/queue-2012-12-11.jpg" alt="A not-unruly queue" /> A not-unruly queue</p>

<p>Recently, I have been doing some work on a pet project which is related to IoT. Part of the project requires a device, with a potentially unreliable connection to the server. The device sends messages regarding the state of certain variables, which are then processed by the server.</p>

<p>One of the first things I realized when I was testing, is that things went south fast if the connection broke between device and server. So I started on a quest to make it more robust. Mind you, this should not have been a quest, but I could not find the tools I needed. The most important tool for handling failed connections is a queue, which can act as a buffer for when the thing emptying the queue (the connection) stops.</p>

<p>There are MANY queues available for NodeJS, but after trying 4-5 of them, I could not find one which met all of my requirements. The requirements are:</p>

<ul>
  <li>Fast Performance (non-blocking)</li>
  <li>Easy to use</li>
  <li>Retries tasks on failure</li>
  <li>Emits Events</li>
  <li>Configurable Worker and Concurrency</li>
  <li>Allows workers to be paused and resumed.</li>
</ul>

<p>After a few days screwing around with it, I finally have landed what I feel is a pretty robust queue for NodeJS. Since I am creative with my names, I opted to call it “robust-queue”. It is a package on NPM and open sourced on GitHub. Check it out <a href="https://www.npmjs.com/package/robust-queue" target="_blank" rel="noopener noreferrer">here</a>.</p>

<p>The queue makes use of the EventEmitters3 package, which improves the performance over the standard EventEmitter package. It also allows for pausing and resuming of the processing, which is important when it is being used a buffer for unreliable internet connections.</p>

<p>I have some additional enhancements such as modular persistence that I want to do to the queue over time, but for now it seems pretty robust ?</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[Queues have a tendency to get unruly. Whether it is a human queue, or a job queue in code, it does not matter. Without some planing and thought into the queue, you can end up with chaos. This goes doubly for non-linear code, where there can be multiple workers taking jobs off the queue.]]></summary></entry><entry><title type="html">I’m baaaaaaack</title><link href="https://anodetome.com/2015/09/26/im-baaaaaaack.html" rel="alternate" type="text/html" title="I’m baaaaaaack" /><published>2015-09-26T00:00:00-04:00</published><updated>2015-09-26T00:00:00-04:00</updated><id>https://anodetome.com/2015/09/26/im-baaaaaaack</id><content type="html" xml:base="https://anodetome.com/2015/09/26/im-baaaaaaack.html"><![CDATA[<p><img src="/assets/content/iamback.jpg" alt="" /></p>

<h2 id="all-apologies">All APOLOGIES</h2>

<p>It has been quite awhile since I was publishing anything.  I couldblame many things like the birth off my son, absurd hours being worked for my former employer, travel, etc.  Those are excuses. The truth is, I actually HAVE been writing, just not publishing. I have many posts in semi-finished form. Over the next month, my goal is to finish them and publish them. You deserve better, I will be better. Maybe.</p>

<h2 id="life-update">Life Update</h2>

<p>Back in May 2015, I quit my job at Tech Data. There were may reasons, but it came down to doing what is right by my family. I was running the number one strategic initiative for a fortune 500 company, and it really took its toll on me. Somehow, we ended up in arrangement where I would work 3 days a week or the next 4 months to help with the transition. This time was great. I was still being paid, working fewer hours, was able to see my wife and son more often, and really gave me time to figure out he next thing in life. Alas, the arrangement was not working out for either of us. So on September 10, I said my goodbyes and walked right into a new era.</p>

<p>During those partial weeks, I established two new ventures (well 3, but we are not talking about the stealthy third one yet). <a href="https://pigott.consulting" target="_blank" rel="noopener noreferrer">Pigott Consulting</a> and <a href="https://pythagoras.io" target="_blank" rel="noopener noreferrer">Pythagoras</a>.</p>

<p>Pigott Consulting is my individual consulting firm specializing in small businesses and startups with full IT service as well as strategic advisement in may areas. Think of it as a part-time CIO. You are interested in these types of services, reach out to me.</p>

<p>Pythagoras is a partnership I formed with a friend who has a stellar IT consulting background. We go after big projects with medium, large, and enterprise clients. Our advantage is that we only work with the rock stars of the tech world, which allows us to deliver superior products in shorter time. If you are looking for your project to be done on-time, on-plan, and on-budget, we would love to hear from you.</p>

<p>My experiences in setting up corporate entities, setting up my office, getting my professional tools setup, and learning new techniques should provide ample fodder for future blog posts.</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Secure and verified integrity eAgreements</title><link href="https://anodetome.com/2015/04/05/secure-and-verified-integrity-eagreements.html" rel="alternate" type="text/html" title="Secure and verified integrity eAgreements" /><published>2015-04-05T00:00:00-04:00</published><updated>2015-04-05T00:00:00-04:00</updated><id>https://anodetome.com/2015/04/05/secure-and-verified-integrity-eagreements</id><content type="html" xml:base="https://anodetome.com/2015/04/05/secure-and-verified-integrity-eagreements.html"><![CDATA[<p><strong>Forward (2018-03-31): I wrote this years ago, and it sat in draft because I was going to get around to writing an OSS library to do this (My employer at the time did not want to open source the version I wrote). Turns out I never did write an OSS version. Although I still think the content is valid and maybe will inspire somebody to write an OSS version.</strong></p>

<p>For several years now, I have had numerous assignment to write an electronic agreement system for one use case or another. After 4 rounds of it, I am seeing some trends in how things should be best organized. I am also seeing pitfalls where the whole thing could fall apart. Since the whole point of these things is to be a legally-enforceable agreement, terms and conditions, signature, or whatever the word flavor of the month is, we need to make sure it is bulletproof. Typically this is accomplished by leveraging a service like EchoSign.</p>

<p>In my typical challenge-everything way of thinking, I decided there must be a better way. Essentially you are paying quite a bit of money to EchoSign and when you boil it all down, you end up with a 3rd party who is vouching for the integrity of the agreement. This means, at the end of the day, either the custodian of the record cannot manipulate the agreement record without invalidating the record (my way), or the third party has a vested and audited interest in maintaining the integrity (EchoSign's way). So this got me thinking about the following question. How can I write an open-source, free solution which enables anybody to verify the validity of the information in question? Oh, and I need to make it happen in 2 days since I am under a deadline.</p>

<p>The solution requires a snapshot of the relevant pieces of information at a certain time be hashed and then that hash needs to be published to an open, independent, and reliable 3rd party. The answer to that question hit me like a ton of bricks. Bitcoin block chain! Bitcoin does a damn good job of ensuring the integrity of the BitCoin block chain, because without the integrity the currency would not be trusted and the double spending problem would rear its ugly head.</p>

<p>Now that I had my solution determined, I needed to figure out how to make it happen. After Googling a bit, I ran across this awesome sitehttp://www.originstamp.org/ which allows you to ensure time-stamped possessionof anything by hashing whatever you send (or you send the hash) and then it embeds the hash in the block-chain once per day. As an added bonus, it immediately tweets the hash as well, which means we are doubly publishing the fact that we had the given hash at a certain point in time. Since I am on a deadline, I decided this service will be much easier to make use of instead of writing my own integration with the block-chain. Naturally I will abstract this functionality so additional adapters can be written in the future.</p>

<p>Now that we have the third-party thing sorted out, lets take a look at how we need to setup our application to work with this. I am using PHP, MongoDB, and Symfony2 for this exercise currently as it is the technology stack we are working on. The same techniques should apply with any other language though.</p>

<p>First thing we need to make verifiable is the agreement itself. This represents the text and any rules associated with the agreement, as well as a name. This should never be updated, only replaced with a new version. So at the most simple terms, we have an agreement which has a date created, some text, a name, and a version. A version is specific to the name. IE. If the agreement is used when trading your first-born for a new TV, I could give the agreement the name “FIRST_BORN_FOR_TV”. The important part is that it does not change, and that it is not the same as other agreements you may be keeping track of. If you are a normalization Nazi, then you probably want the name to be a UUID. Now when some lawyer gets a hold of our agreement and invalidates it because we are inciting slavery, we need to update our agreement for all future customers. Perhaps we change the wording so it has the same net-effect, but now we are not owning a person, but merely being the recipient and director of all labor for the rest of the first-born's life. Now we create a new agreement using the same “FIRST_BORN_FOR_TV” and increment it to the next version. We create a SHA256 hash of the name, version, UTC timestamp, and the text of the agreement. Then this is stored along with the agreement. At the time of creation, we have also published the hash to Origin Stamp via their API. You can see my first test agreement published to the BitCoin block-chain and on twitter at the links below.</p>
<ul>
  <li><a title="Origin Stamp Verification" href="http://www.originstamp.org/s/2db3c9c6296bf6f2372112336ce5fd72f66cfcc89b0a5bb37742052ef04242b8" target="_blank" rel="noopener noreferrer">Origin Stamp Verification</a></li>
  <li><a title="https://twitter.com/OriginStamp/status/584541654725611520" href="https://twitter.com/OriginStamp/status/584541654725611520">https://twitter.com/OriginStamp/status/584541654725611520</a></li>
</ul>

<p>Looking at the hash, you say, “so what? This doesn't tell me anything.” You would be correct in that it is not much use other than being able to prove that the creator of the hash (me) was in possession of the hash by2015-04-05 02:22:45 UTC at the latest. This means I did not generate the hash later than that time, which means the data I stored can be verified that it did not change from that time. What this means is that a third party can take the data we stored as the agreement, run it through the same hash generator, and get the same hash. If anything changed, the same hash would not be created, and the information would be suspect.</p>

<p>In order to capture the event of somebody signing the agreement, we need to create a signature entity. This needs to have a reference to the agreement, the full name, the IP Address of the signor, the email address, and the date signed. We then hash all of this info (using the integrity hash from the agreement to represent the agreement) and we have a signature integrity hash. We then publish this.</p>

<p>One issue which may arise is any changes made to the system. Meaning, how do you deploy any changes to the hashing system (like capturing additional pieces of data). This is also solved through hashing. Conveniently we use GIT for our code repository, which has a unique hash for every commit. All we need to do is capture the git hash at the time of the signature, store it with the signature record, and add it to the hash. In this way, we know the code used, the data, and the point in time. This can all be verified by a third part who can get that point in time of the code, recreate the same hash steps, and recreate the same hash, thus proving that we captured the exact data at the time when the agreement was signed and not after the fact.</p>

<p>My wife has suggested we call this technique HashCash. Between the long explanation of BitCoin and Hashes, I think she tuned me out and this was her way of showing she was still listening.</p>

<p>TTFN</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[Forward (2018-03-31): I wrote this years ago, and it sat in draft because I was going to get around to writing an OSS library to do this (My employer at the time did not want to open source the version I wrote). Turns out I never did write an OSS version. Although I still think the content is valid and maybe will inspire somebody to write an OSS version.]]></summary></entry><entry><title type="html">Wordpress Relocation</title><link href="https://anodetome.com/2015/03/22/wordpress-relocation.html" rel="alternate" type="text/html" title="Wordpress Relocation" /><published>2015-03-22T00:00:00-04:00</published><updated>2015-03-22T00:00:00-04:00</updated><id>https://anodetome.com/2015/03/22/wordpress-relocation</id><content type="html" xml:base="https://anodetome.com/2015/03/22/wordpress-relocation.html"><![CDATA[<p>My wife got me into this whole blogging thing last year, as she is a fairly active blogger. You can check out her site at <a title="sarahsteinerart.com" href="http://sarahsteinerart.com" target="_blank" rel="noopener noreferrer">sarahsteinerart.com</a>. Tell her I sent you.</p>

<p>Anywho, I originally set up her blog back in 2012 with a Hostmonster site. I have since been lazy and have not maintained it. So today, I finally go around to moving the site over to wordpress.com in order to let the good people at Automattic (the makers of Wordpress) deal with patching, scaling, and backups.</p>

<p>You would think with a service offering that they charge for, that they would make the path from their free software hosted on your own server to their hosted service a smooth one. I can tell you it is not. Some gotchas to watch out for.</p>
<ul>
  <li>If you use “www” on the original blog, you wont be on the hosted one. This causes an infinite redirect loop until the DNS catches up (which took a few hours).</li>
  <li>Media will be linked back to the old site, yet will be served from the Wordpress CDN. Not sure why the links could not be updated also. At least we got to look through the hundreds of blog posts over the past years.</li>
  <li>Going through each page and making sure it transferred correctly is a chore. Especially when pictures seemed to transfer at random.</li>
</ul>

<p>We got the site moved over, it is much faster and cleaner now, so perhaps it was not all bad. Next step is to close down the pesky HostMonster account.</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[My wife got me into this whole blogging thing last year, as she is a fairly active blogger. You can check out her site at sarahsteinerart.com. Tell her I sent you.]]></summary></entry><entry><title type="html">Anode Tome or An Ode To Me?</title><link href="https://anodetome.com/2015/03/15/anode-tome-or-an-ode-to-me.html" rel="alternate" type="text/html" title="Anode Tome or An Ode To Me?" /><published>2015-03-15T00:00:00-04:00</published><updated>2015-03-15T00:00:00-04:00</updated><id>https://anodetome.com/2015/03/15/anode-tome-or-an-ode-to-me</id><content type="html" xml:base="https://anodetome.com/2015/03/15/anode-tome-or-an-ode-to-me.html"><![CDATA[<p>I finally got around to adding a domain to this site. As soon as I bought the domain (anodetome) I realized a certain level of confusion this may cause.</p>

<p>If Celebrity Jeopardy has taught me anything its that there are unintended ways to interpret everything. While I do believe that “The Pen is Mightier”, I also have to chuckle everytime I see it as I cant help but think of “The Penis Mightier.” So now I have “Anode Tome” which would literally mean “big book about anodes”, which as appealing as it sounds is not what is attracting people to this site in droves.</p>

<p>What is attracting people to this site is an overwhelming desire see what I am doing in my ever-so-interesting life. So we arrive at, “An Ode To Me”, which is fitting for all my legions of fans…… Hmm perhaps this explains why I do not have legions of fans…..</p>

<h3 id="update-2022">Update 2022</h3>
<p>Sarah has a lovely decor sign that say “Let it snow” next to our TV.  I can’t help but always see “Le Tits Now”.</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[I finally got around to adding a domain to this site. As soon as I bought the domain (anodetome) I realized a certain level of confusion this may cause.]]></summary></entry><entry><title type="html">A platform for the fish tanks</title><link href="https://anodetome.com/2014/11/02/a-platform-for-the-fish-tanks.html" rel="alternate" type="text/html" title="A platform for the fish tanks" /><published>2014-11-02T00:00:00-04:00</published><updated>2014-11-02T00:00:00-04:00</updated><id>https://anodetome.com/2014/11/02/a-platform-for-the-fish-tanks</id><content type="html" xml:base="https://anodetome.com/2014/11/02/a-platform-for-the-fish-tanks.html"><![CDATA[<p>Recently, as part of my on-going quest to <a href="/2014/11/02/an-aquaponics-system-to-call-my-own-part-1.html">build myself an Aquaponics system at home</a>, I needed to build a strong platform. An IBC tote full of water and fish will be quite heavy (about 2,300 lbs), and 4-5 of them will be that much heavier. For this reason, combined with the fact I live in Florida and we have termites, I decided to build the platform out of pavers.</p>

<p>The design is pretty simple. 5ft deep, 20ft wide, and made up of 12x12 concrete pavers over crushed paver base. I decided to use some pressure treated 2x4s as the sides. The list of materials is below.</p>
<ul>
 	<li>100 - <a title="12x12 Concrete Pavers" href="http://www.homedepot.com/p/Unbranded-12-in-x-12-in-Square-Concrete-Step-Stone-12052410/100344165">12x12 concrete pavers</a></li>
 	<li>50 - <a href="http://www.homedepot.com/p/SAKRETE-1-2-cu-ft-Paver-Base-Mix-100061837/205314267">0.5 cu ft bag paver base</a></li>
 	<li>1 - 6x50 roll of weed block</li>
 	<li>2 - 12 pack of pre-cut stakes</li>
 	<li>18 - 2x4x8\' pressure treated</li>
</ul>
<p>The best way I found to do this is to put the surrounding edge pieces in first using the stakes and get them level. In my case, the ground is not real level, so I had to dig a few inches down on the one side and the other side is a few inches above the ground.</p>

<p>Next step is to dig out/fill in the interior of the frame. Again, in my case, things are not level so I ended up excavating from one area and putting it in the other.</p>

<p>After getting your area leveled out, go ahead and put the weed block down. I immediately poured a few bags of paver base on it around the sides so that the weed block stays in place.</p>

<p><img src="/assets/content/2014-11-02-15-05-15.jpg" alt="Patio edges showing weed block and paver base." /> Patio edges showing weed block and paver base.</p>

<p>After that it was a matter of pouring lots of paver base into the opening and getting it leveled off. Make sure to use a tamper to compact the base so it does not settle. Now that we have a level surface, start putting the pavers down.</p>

<p>Last step is to put some 2x4s around the sides to finish the edges. Check out the pictures below to see the details better.</p>

<p><img src="/assets/content/2014-11-02-15-05-06.jpg" alt="" /></p>

<p><img src="/assets/content/2014-11-02-15-04-43.jpg" alt="" /></p>

<p><img src="/assets/content/2014-11-02-15-04-56.jpg" alt="" /></p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[Recently, as part of my on-going quest to build myself an Aquaponics system at home, I needed to build a strong platform. An IBC tote full of water and fish will be quite heavy (about 2,300 lbs), and 4-5 of them will be that much heavier. For this reason, combined with the fact I live in Florida and we have termites, I decided to build the platform out of pavers.]]></summary></entry><entry><title type="html">An aquaponics system to call my own (part 1)</title><link href="https://anodetome.com/2014/11/02/an-aquaponics-system-to-call-my-own-part-1.html" rel="alternate" type="text/html" title="An aquaponics system to call my own (part 1)" /><published>2014-11-02T00:00:00-04:00</published><updated>2014-11-02T00:00:00-04:00</updated><id>https://anodetome.com/2014/11/02/an-aquaponics-system-to-call-my-own-part-1</id><content type="html" xml:base="https://anodetome.com/2014/11/02/an-aquaponics-system-to-call-my-own-part-1.html"><![CDATA[<p>In the past few years, my father and uncle have started a large-scale aquaponics company in Wisconsin called Aqua Terra Farms (http://www.aquaterrafish.com/).  The repeated mentions has piqued my interest, so I am setting up my own system at home in Florida.  In addition to the benefits of fresh and home-grown food, I also see a great project on my hands which can combine my software skills with my interest in automation and machine control, as well my love of good food.</p>

<p>I started doing some research on how I would make this work.  One of the best ideas I have come across is using an IBC tote and cutting the top off to make both the fish tank as well as the growth bed.  In case you do not know what an IBC tote is, I have included a picture below.</p>

<p><img src="/assets/content/2014-11-02-15-06-45-e1414959042519.jpg" alt="IBC Tote" /> An IBC Tote. Sitting in the corner of my shop for far too long.</p>

<p>A great tutorial on how to do this is embedded below.</p>

<iframe width="720" height="400" src="https://www.youtube.com/embed/WYFM7J_TpTU" frameborder="0" allowfullscreen=""></iframe>

<p>Once I decided this was the way to go, I started doing some more Googling to get additional ideas.  One idea that I really like is on Instructables.  <a title="Raspberry Pi controlled Aquaponics" href="http://www.instructables.com/id/Raspberry-Pi-Controlled-Aquaponics/" target="_blank" rel="noopener noreferrer">Raspberry Pi controlled Aquaponics</a>.  Which really got my wheels turning.  I decided it was time to actually start the project.</p>

<p>I found an guy on Craigslist who was willing to sell me a tote for about $100.  In the process of picking up the tote, I backed up too far with my trailer and gouged my rear bumper.</p>

<p><img src="/assets/content/2014-11-02-15-03-05.jpg" alt="Gouged bumper" /> This project is getting expensive.</p>

<p>Once I had the tote, I needed to figure out where I was going to put it.  Originally I had thought about putting it near the carport, but decided against that as the area around the carport is fairly nicely landscaped and I did not want to create an eyesore.  Upon doing some further thinking, I decided to put the system on the backside of my shop.  There is plenty of space, lots of sun, it is hidden from view, and it is close to the shop (and internet, which I will get to later).  Plus the wife approves, which is a plus.</p>

<p>Having decided on a location, I set out on the task of building a platform to hold the tanks and some soft of roof structure in the future.  If you want to know more about the platform, check out my other <a title="A platform for the fish tanks" href="/2014/11/02/a-platform-for-the-fish-tanks.html">post</a>.</p>

<p>Lets get to the more entertaining parts.  I want to make the system automated.  Specifically I want the system to have the following parts controlled by or reported to a <a href="//www.amazon.com/gp/product/B00LPESRUK">Raspberry PI</a>.</p>
<ul>
  <li>Water temperature of fish tank</li>
  <li>Outside air temperature</li>
  <li>Pump on/off</li>
  <li>Drain valve</li>
  <li>Depth of water in the grow bed.</li>
  <li>Volume of water flowing into the grow bed.</li>
</ul>

<p>In order to make the automation work, I knew there was going to be a good deal of reading and experimenting.  I was not aware just how much would really be entailed.  I will chronicle my experimentation and development in subsequent posts.</p>

<p>I decided to go ahead and buy all the parts I thought I would need for automation pieces.  The aquaponics stuff is below.&lt;/p&gt;</p>

<ul>
  <li><a href="https://www.amazon.com/gp/product/B00CHEZ250/">Vktech 5pcs DS18b20 Waterproof Temperature Sensors Temperature Transmitter</a></li>
  <li><a href="https://www.amazon.com/gp/product/B0018X2XT4/">EcoPlus 728310 Eco 396 Submersible Pump, 396GPH</a></li>
  <li><a href="https://www.amazon.com/gp/product/B0057OC5O8/">SainSmart 4-Channel Relay Module</a></li>
  <li><a href="https://www.amazon.com/gp/product/B004DL0Y9O/">TotalPond V16010 1/2-Inch by 20-Foot Length Flexible Vinyl Pond Tubing</a></li>
  <li><a href="https://www.amazon.com/gp/product/B000255NCI/">API Freshwater Master Test Kit</a></li>
  <li><a href="https://www.adafruit.com/products/997">Plastic Water Solenoid Valve 12V 1/2 Nominal</a></li>
  <li><a href="https://www.adafruit.com/products/828">Liquid Flow Meter Plastic 1/2 NPS Threaded</a></li>
  <li><a href="https://www.adafruit.com/products/463">8” eTape Liquid Level Sensor + extras</a></li>
</ul>

<p>Other things you will need (I already had these).</p>

<ul>
  <li><a href="https://www.amazon.com/gp/product/B00LPESRUK/">Raspberry Pi Model B+ (B PLUS) 512MB Computer Board</a></li>
  <li><a href="https://www.amazon.com/gp/product/B006H06TVG/">Arduino UNO R3 board with DIP ATmega328P</a></li>
  <li><a href="https://www.amazon.com/gp/product/B00NUN98UW/">Tontec® Raspbery Pi B+ Case Transparent Cover Box Enclosure for Raspberry Pi Model B+</a></li>
  <li><a href="https://www.amazon.com/gp/product/B005TZJ0AM/">Wosang Solderless Flexible Breadboard Jumper Wires M/M 100pcs</a></li>
  <li><a href="https://www.amazon.com/gp/product/B00488G6P8/">SanDisk 8GB microSD High Capacity (microSDHC) Card (Class 4)8 GB</a></li>
  <li><a href="https://www.amazon.com/gp/product/B0002JJU28/">Elenco TL-6 Standard Alligator Lead Set, 10-Piece</a></li>
  <li><a href="https://www.amazon.com/gp/product/B00GF9T3I0/">CanaKit Raspberry Pi Micro USB Power Supply / Adapter / Charger</a></li>
  <li><a href="https://www.amazon.com/gp/product/B001TH7GUA/">AmazonBasics USB 2.0 A-Male to B-Male Cable 6 Feet (1.8 Meters)</a></li>
</ul>

<p>For the details on how to connect everything together, see this post.  The next post in this series will be installing the sensors in the tanks, and then starting the system.</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[In the past few years, my father and uncle have started a large-scale aquaponics company in Wisconsin called Aqua Terra Farms (http://www.aquaterrafish.com/). The repeated mentions has piqued my interest, so I am setting up my own system at home in Florida. In addition to the benefits of fresh and home-grown food, I also see a great project on my hands which can combine my software skills with my interest in automation and machine control, as well my love of good food.]]></summary></entry><entry><title type="html">GitHub pages</title><link href="https://anodetome.com/2014/11/02/github-pages.html" rel="alternate" type="text/html" title="GitHub pages" /><published>2014-11-02T00:00:00-04:00</published><updated>2014-11-02T00:00:00-04:00</updated><id>https://anodetome.com/2014/11/02/github-pages</id><content type="html" xml:base="https://anodetome.com/2014/11/02/github-pages.html"><![CDATA[<p>As a software developer, I pride myself on having public activity on GitHub, and if people want to know more they will navigate to my github page at http://westinpigott.github.io/. What I dont like is that I now need to maintain 2 locations on the web. I only want one. So I have decided to forward my GitHub page to this site. A more robust, and easier to use blog than using Jekyll or writing static content. This allows me to get back to doing what I enjoy, which is writing the code to do stuff, and not just to display a page.</p>]]></content><author><name>Westin Pigott</name></author><summary type="html"><![CDATA[As a software developer, I pride myself on having public activity on GitHub, and if people want to know more they will navigate to my github page at http://westinpigott.github.io/. What I dont like is that I now need to maintain 2 locations on the web. I only want one. So I have decided to forward my GitHub page to this site. A more robust, and easier to use blog than using Jekyll or writing static content. This allows me to get back to doing what I enjoy, which is writing the code to do stuff, and not just to display a page.]]></summary></entry></feed>