Outdoors, Green Living, Homesteading, Sustainable living, Green Building

Author Archive

Introduction to Data Structures and Java Collections

We all know programs have data, in fact in OOP an object is Data and Related program logic packaged into this thing called an Object. In Java, we have primitives byte, short, int, long, float, double, boolean, char. A String is an object made of the primitive char. But in general, all objects can be broken down into these primitives. And of course, all primitives are made of bytes. So you can say the most basic data type is the byte. And the most basic data structure is a series of bytes. Or an array of bytes. And the most basic collection is the Array.

  • The bit (on or off, 0 or 1, true or false)
    • boolean actually its stored as around 1 byte in the JVM, but its JVM dependent.
    • BitSet is a class that stores and handles bits in bit size memory allocations.
  • The Byte (8 bits)
    • byte  1 byte signed whole -128 to 127  byte times 0xff will convert it to 0 to 255
    • short 2 bytes signed whole -32,768 to 32,767
    • int     4 bytes signed whole -2,147,483,648 to 2,147,483
    • long  8 bytes signed whole -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
    • float  4 bytes signed real 6-7 significant digits  ±3.40282347E+38F
    • double 8 bytes signed real 15 significant digits  ±1.79769313486231570E+308
  • Character
    • char 2 bytes  whole unsigned 0 to 65535  (for unicode characters) ASCII still fits in first 256 or 0 to 255 space.
    • String  a most common object that holds any number of char’s.
  • Reference
    • reference 4 bytes on 32 bit JVM, 8 bytes on 64 bit JVM so 8 bytes for most of us.

One might say a Java Reference value is a primitive whos value is a memory location. That would, however, be a pointer that languages like C use. But a reference is special in that you can’t see that value or use it. You can only swap values that you never see or use. References can have a value of null for example or be assigned a value with the new operator or assigned a value = to another reference’s value. Also in Java as of lambda’s you can pass a function by value, as well as an object. Object::methodName is a reference to an function.

If you want to see the size of something in Java, just use the Runtime object methods to determine free ram, make a bunch of that one thing or object, then subtract. Divide by the number of things or objects and it will give a rough estimate of its size. Java lang probably didn’t provide a sizeof operator because it wouldn’t be pretty. If you want to check the execution time of something you may do a similar feat. Just get the System.currentTimeMillis(); At the start of a method call, then again at the end of it. Subtract. You might even run it a hundred times then divide by 100 to get an average execution time.

  • make it work
  • make it right
  • make it fast
  • make it cheap

There are several methods used to determine the efficiency of algorithms. Big-O notation being one. I can not explain these because I have never really understood them. But I will simply tell you about them and you can research it for yourself. There are the Best case, Average case, and Worse case analysis. Also, IDE’s come with profiler tools. These tools can give you information on execution times for various parts of your programs. This can help to reveal “Bottlenecks” in performance. As a newbie, you may not need to be too worried about such issues. Java language Collections API will already be optimized for most of your needs. Just remember the following above list. Performance is not usually the first consideration when developing apps.

  • Classes
  • Objects
  • Arrays

So an object is made up of a list or collection of these values be it primitive or reference. This makes an object something like a data record. A data record is a list of name:value pairs in a given order. The data in an object is called fields and since methods are now referenced methods as well. The constructors are “constructor methods”. So yes I suppose they are references too. I’m not quite sure how inner classes are handled. But they are not part of the data of the class. They are a class (object) with their own data. I sometimes say Class and sometimes say Object.

A class is a blueprint for the objects. Any static fields and methods or other members belong to the class. Constructors cannot be static and are implicitly final. So the class has its set of name:value pairs also. But the distinction is that the class members are not copied. You can, however, make as many objects as you want from the class definition. This is what makes an object like a record in a database table. Make sense?

So an Array is a linear contiguous list of whatever data type you make an array of.  Each item in this list is an element and has a position number. So an Array[100] has elements numbered 0 to 99. Computers count starting at 0 if you recall. An array of a primitive is simply a list of numbers. An Array of an object of some kind is like a database table. Each object is then the record in the table. But the point here is that the two most basic data structures are Arrays and Objects.

  • Files
    • local storage
    • remote storage
    • archive storage
  • Streams
    • from input or to output
    • from memory to memory
    • storage to memory or memory to storage

A file on disk might also be considered to be a data structure. It is in its most basic form a series of bytes. As the bytes are read or written from memory, they are converted to and from primitives or objects. A line of text from a file is the object String. A file can be read as a series of bytes, or characters. And with utility classes other primitives and objects as well. IO Streams can be read and written as bytes, primitives, objects as well. But a stream is not a data structure. A stream is just a flow of data. You might say that data structures are stored in memory, passed through streams and stored in files on storage devices. The streams connect files with memory or computers with computers. So computer to computer is like a memory to memory stream. Streams may also come from input devices or go to output devices etc.

  • storing and retrieving
    • basic structures
      • Arrays
      • List
      • Hash Tables
      • Maps
      • Sets
      • Heaps
      • Dictionaries
      • Trees
      • Graphs
    • basic methods
      • random access
      • sequential
  • searching
  • sorting
  • traversing
  • recursion
  • randomization

Data structures become quite a bit more complex than what we have talked about thus far. A typical semester college course will cover them. And if you look you can find used textbooks everywhere about data structures. Look for Java Collections and Data Structures books. So what do these books cover?  Basically, storage and retrieval, sorting and searching.  As it turns out there are simple and quick to implement methods and more complex methods and difficult to implement methods. These methods have been pretty well standardized and are called algorithms. The name of the algorithm is sometimes named after the guy or gal who invented it. Or in the case of Bubble Sort, named based on how it works. All of these algorithms are used in varied situations throughout the computer world and even as a common computer user you see them in practical use every day.

Much can be said about Data Structures and Collections. I am going to be as brief as possible in this article, mostly listing and defining things for you. You can almost think of data structures as patterns for the way data has been kept for particular uses. These patterns sometimes seem like things we see in nature, a stream (List), branches (Tree), a web (Graph? Should have been Network) for example. So structures can have similar sounding names. Sometimes developers seem to misname things. Once the name is stuck, its there for good as if written in stone. For example, the Graph structure, in my opinion, would have been better called a Webb or a Net. Heck, a 2-dimensional array is more like a graph.  I hereby and from now on declare 2D arrays to be called Graphs and 3D arrays Cubes!

A 4D array a MultiVerse! A 5D Array is a Twilight Zone!  Naw… Let’s not overdo it.

One thing I want to note is that Java had collection classes originally that were synchronized. This means thread safe. There was a certain inefficiency in having any class to be synchronized so they decided to make new classes that were not synchronized. This is why we have Vector class vs ArrayList class. Vector is synchronized.

  • Arrays
    • Multi-Dimensional Arrays  (In Java these are Arrays of Arrays)
      • One Dimensional
      • Two Dimensional
      • Three Dimensional
    • Arrays of primitives.
    • Arrays of Objects.
    • The Arrays Class
    • The ArrayList Class
    • Treating a Random Access File like a storage-based array.
    • Stacks and Queues using Arrays

Using Arrays and Array-based objects is where you will start in programming data structures generally. One thing you will note is that you can use Arrays for stacks and queues, or linked list for stacks and queues. This is data structures within data structures more or less. You can also form trees within arrays. For example, you can do quicksort using trees in arrays or a dynamic tree structure. Same goes for other searching and sorting techniques. The Arrays class has some nice methods for search and sorting arrays. The ArrayList class is a wrapper for an array.  The ArrayList class has some handy methods for things you might normally have to code yourself, such as insert and delete. It will also give you a ListIterator for processing the array items sequentially.

  • Iterators
  • Comparable interface
  • compareTo() method

Iterator is something you will need to look into, its used much with List. It allows you to step through a list with hasMore() and next() methods. Otherwise, you would use a for loop to do the same. Also for sorting you will need to look into Comparable Interface and compareTo() method. Objects you want to sort will need to implement this interface.

  • Lists
    • ArrayList
      • ArrayList class
    • Vectors
      • Vector class
    • LinkedList
      • LinkedList class
      • Double Linked List
      • Circularly Linked List
      • Sorted Linked List
    • Stacks
      • Stack class
    • Queues
      • Sequences
    • Double Ended Queues
      • Dequeues
    • Priority Queues
      • Heaps

Lists are a series of some kind of data. The ArrayList and Vector above wrap an Array ( Static Data Structure) Whereas, Linked data structures are dynamic meaning they grow and shrink as needed. Sequences are ordered queues. A queue is a first in first out list (FIFO). Examples of a queue are keyboard buffer queue. A production queue worklist in a video game.   A priority queue is like multiple queues where each priority level has its own queue, higher priority queues are worked first. A stack is a last in first out list (LIFO). Imagine a stack of papers on desk where you you routinely add new things to the top of it. But you only work whats on top first. So you may work the stack down to half it size, or one day get busy and work it down to the bottom. I used a stack for a type of random surface generator a few years back on the Java Games and Graphics project, actually I did this many years ago with Pascal too. It generates a 3D surface that looks like a volcanic island.  Another example of a stack is the call trace stack that Java generates when exceptions are thrown. Heaps are randomly stored data of random sizes. Common examples are memory heaps. I also think of heaps as piles, mounds. Storage media manages data as heaps more or less. With heaps size and free space has to be managed properly or things run out of control. This is why we defrag occasionally. Memory can be defragged as well, I had a tool for this once but forgot what it was called.

  • Hash Tables
    • HashMap class
    • HashSet class
    • Hashtable class
    • LinkedHashMap class
    • LinkedHashSet class
    • WeakHashMap class

Has tables are lookup tables that store using key:value pairs. The way they work makes them very fast and efficient at storing and looking something up. You will see more data structures on data structures in the above.  Maps, List, Sets, Linked etc.

  • Maps
    • EnumMap
    • HashMap
    • Hashtable,
    • LinkedHashMap
    • TreeMap
    • WeakHashMap

Map, Dictionary, Hashtable all almost the same thing. Store using key:value pairs. Keys generally have to be unique.

  • Sets
    • TreeSet class
    • HashSet class
    • LinkedHashSet class
    • EnumSet class

Sets contain no duplicate elements. No objects who are equal when using the equals() method and only one null value at most. A set is really not as much of a data structure as a data requirement or restriction.

  • Trees
    • General Trees
    • Binary Trees
    • AA-Trees
    • Threaded Trees
    • Balanced and AVL Trees
    • NonBinary Trees
    • B-Trees
    • Binary Search Trees
    • Multi-Way Search Trees
    • (2,4) Trees
    • Red-Black Trees
    • Splay Trees
      • Bottom-Up
      • Top-Down
    • TreeMap Class
    • TreeSet Class

Trees are a common structure in nature. It’s talking about a branching structure. Other similar structures might be a river, stream system for water flow. A ridge structure branches a lot as well. The lungs have a branching structure whereas the circulatory system is more of a graph structure. Graphs or Networks can be broken down into a tree structure. Of course, a file system is a well-known tree structure that everyone uses and knows. Document object models are tree structures, such as XML or HTML DOM. This is a structure that developers should learn and know well.

  • Dictionaries
    • Log files
    • Hash Tables
    • Ordered Dictionaries
    • Lookup Tables
    • Skip List

Dictionaries are more or less like Hash tables or Maps

  • Graphs
    •  Networks
    •  Paths
      • Shortest Paths
        • negative  weighted path
        • positive weighted path
        • acyclic path
      • critical path
      • backtracking
    • Weighted Graphs
    • Directed Graphs
    • Undirected Graphs
    • Spanning Trees

As I said before I think Graphs data structure was misnamed. Net, Network, Mesh, or Web might have been better. Common graph structures in nature are spider webs, highway systems, electrical grids, and the internet itself. A cave system might be mapped out like a graph if it is a complex one. A graph is basically like a tree except that branches can connect to other branches. So in traversing a graph structure, you could end up going in circles. With graph structures, you get into Paths and pathfinding, for example finding shortest paths. I can see great uses for this in AI and game coding.

  • searching
    • linear searching
    • sequential search
    • binary searching
    • interpolation search
    • tree search

Java has some built-in implementations for searching, Look at the Arrays class. Its easy enough to code a linear search with for loop or an iterator.

  • sorting
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Shell Sort
    • Merge Sort
    • Tree Selection Sort (Tournament Sort)
    • Heap Sort
    • Quick Sort
    • NonRecursive QuickSort
    • Bucket Sort
    • Radix Sort

Why so many sort algorithms? Some are more efficient than others in given situations. Each one has a different best case, worst case and average case execution time. Java has some built-in implementations of the quicksort. Look at the Arrays class. Bubble sort is an easy one to code and is quick if the list is already in a mostly sorted state. You must iterate the list as many times as there are elements and simply swap higher with lower ones as you go. Lower values rise and high values sink. Or vice versa depending on how you set up the comparison. A very efficient sorting algorithm would analyze the data somehow and then pick the best one of the above to use for the given situation.

  • recursion
    • indirect recursion

Recursion is where a function calls itself. You would think this would end up in an infinite loop, but if set up properly it will not. Recursion is used heavily in sorting and traversing and working with trees. Though you don’t have to use recursion, you can code just about anything with or without recursion using loops and conditions instead. Indirect recursion is where function a calls function b and function b calls function a.

So this is an outline and guide for you to use in your computer science studies. It was taken from 4 textbooks about data structures. You should also search for things on Wikipedia such as “sorting algorithms”. Wikipedia list one I have not listed here Comb sort. Sometimes an algorithm has two names. I think this article could be made better, so consider this version 0.1 apha. As time goes by I will amend it. This is going to be the first in a series of articles I will do over the next one or two years where I make up my own examples of how to use everything talked about in the article using Java and hopefully eventually Javascript as well.




Learn to Code Java!

How easy is it to begin learning Java? I will explain steps needed to get started. What tools are needed? Which tools to avoid at first. Ask yourself a few questions. Why do you want to learn Java? What are your main goals in learning Java? What do you want Java to do for you? What kinds of problems do you want it to solve? You can use Java to code console apps, desktop apps, web apps, phone/tablet apps etc. Are you learning it because of school or because of work? For hobby? For self-education?

  • Get the JDK (Java Development Kit)
  • Get a console or command line, either Linux shell or Windows shell.
  • Get a text editor JEdit, Atom or Editpad Pro.
  • Get a java.exe interpreter and javac.exe compiler.
  • Get a google, and with a google get an Oracle Java documentation or tutorial.
  • Get a HelloWorld.java example.
  • Consider getting Ant build tool, though it’s not necessary for learning and I don’t use it for simple things, it’s a good tool to begin to become familiar with. And it’s easy to use at the command line.

This is all you need to begin learning Java but there are a couple of more steps in getting started.

  • add JDK bin folder to the system path variable.
  • set the classpath variable to ‘.’ current folder.

Other tips I have, make a c:\dev\java\work  folder to put things in as you learn. If you do not know how to use the console begin to learn simple things. Even learn to make a simple batch file on Windows or shell scripts on Linux. You can use Windows notepad.exe or even the vi editor on Linux if you wish to begin with, no text editor need be installed. I install jdk under c:\dev\java\jdk9  where 9 is the version major version number. so my bin folder is in c:\dev\java\jdk9\bin  which is what you need on the path so that you may use the command line tools. Ant will also have to be added to the path environment variable.

So pull up the editor, get the hello world example text and paste it into a blank buffer, save it as HelloWorld.java and then you will see that the editor should highlight the syntax in color for you. If not then you need to search for how to turn on syntax highlighting. It’s not necessary but it is nice. Sorry, no highlighting for Notepad users. Next compile with javac HelloWorld.java, if no errors then run with java HelloWorld. If all went well, then you should see something like “Hello World!” output to console. Congratulations you are now a Java programmer!

The next thing to learn will be more about System.out.println() or other System.out methods.  You can also use the Java Scanner class to get input from the command line easily.  Sorry, no color at the windows consoles at least. That is without using a 3rd party library such as JCurses.

You can code GUI apps with text editors and you should. Except for phone/tablet apps because they are a bit more complex you will need to install the Android Development Kit and Studio. If you want to learn web development then download Tomcat web server and run it. With Tomcat learn Servlets and very basic Java Server Pages. Learn Java Server Faces and Facelets. Learn Spring and Hibernate. And don’t expect to learn all of that in a day. I’d say a year of constant hard work maybe. You will also need to learn HTML 5, CSS 3 and at least some Javascript would be nice. Firebug is a good plugin for Javascript. And you will need several browsers for testing and development and testing. Then pick one probably Firefox for main development browser.

But for graphical fun just use java AWT, and Swing API’s. And begin to learn the replacement for those called JavaFX. And you can do this with text editors and command line tools and should.  I recommend coding applets for starting GUI and use appletviewer.exe tool to run them. Applets make it easy to get started drawing some graphics, using color and playing sound. You can move on after you get little better at GUI coding to Java frames for desktop and Java Web Start apps, which are basically the web replacement for applets.

For databases get SQLite or H2, find the appropriate JDBC drivers and get the JDBC Api’s and tutorials. Get an SQL tutorial from the Google.

Finally, if you must, get you an Eclipse IDE and check it out.  Or try out IntelliJ Idea or Netbeans, or one called BlueJ. There are probably others. There is a learning curve to using any tools, and using IDE’s do not make learning to program Java easier but can do the opposite. You can get by without an IDE for much by using Jakarta Ant build tool at the command line. You simply create a build.xml file and put it int he folder with your source. Then in that folder simply type ‘ant’ and it reads that file and builds your project, it removes old class files, recompiles all source files building new class files. It can build javadocs with the javadoc.exe tool which is the java documentation from your project and much more. It can even create jar archive files and deploy them to websites.

If you want to help out on opensource projects you will need to get you a GIT or SVN tool installed. CVS was the old tool and may still be used on some projects. There is a learning curve to using these tools so be prepared. Once you pass over a few hurdles its not bad at all.

The Java language comes with some very simple testing functionality. But you may want to look into testing frameworks such as JUnit for Java. There is one for javascript as well. You can write your own test without that, these are called drivers.  You simply make a class that sole purpose is to create an object and call its methods to test it out.

First things first. Learn Objects first. In Java, everything is an Object. The quicker you learn Java OOP the better. And let me warn you that Javascript OOP is similar but different and somewhat confusing compared to Java OOP.  Just begin some basic class definitions with constructors, methods, and fields. Make everything public ( a bad habit you will break later) and don’t use static class members, to begin with.  Later you will learn about inner classes, local classes, and anonymous classes. Anonymous inner classes are the more practical and useful. Though you are better off just making outer classes for now. You should always just put one class in one source file, it must be declared Public and it must be named the same as the source file. You can put other non-public classes in the same source file, it’s just not normally recommended because it can make it harder to find a class in amongst many source files when you go to look for it.  You will want to learn about Interfaces and Abstract classes and methods fairly quickly.

Public access means a class member can be seen by any other class anywhere, in the same package or others. Private means a member can only be seen by the class that it is a member of, not even sub-classes. You will need to learn about inheritance and polymorphism fairly soon too.  If a member has no access modifier then it can be seen by all classes in the same package (folder).  BTW ‘.’ is the current folder which is the default package in Java. If you include no package statement then the class is in this default package. Import in Java simply imports the name so that you do not have to use the full path to the class name such as java.awt.Button. If you import it then all you need to use Is Button. And java.lang.* is automatically imported in all classes. So you do not have to use java.lang.Integer, for example, only Integer and with no import java.lang.*; or import java.lang.Integer; For classes to be available to use in your app all that is needed is that they are found in the classpath.  So look into how to add classes or archives jar files to the classpath. There are a number of ways to do this.

I hope this is a good starting point for you if it is please let me know by emailing me admin@softwaredeveloperzone.com And read my articles at Software Developer Zone, softwaredeveloperzone.com







Im a Columnist on Brink of Freedom

Brink of Freedom (dot net) is a new web site and community for survivalist and preppers (pioneers). Their main topics are Fire Arms, Tactical, Economics, Politics, Homesteading, Health and Wellness, Outdoor Activities.

I have about 8 articles there so far and will be publishing one per week every Friday.

Author Listing
My author page with a list of my articles thus far

Zai sqaure foot garden 5 End of Summer

This is August 16th and 17th. All I had time for here is to take some photos. I did get one meal out of it and a bit more this time in. I will show you first the food that was picked and prepped and cooked. I had tomatoes, cucumber, bell pepper, banana pepper, green beans and Lima type beans.

Next I show you some photos of some brush clearing work around the pond side of the garden. This was on the south west and south eastern sides/corners of the garden. We are trying to open it up more to morning and afternoon sun. I managed to save about 3 cherry trees I hope that where overtaken by other trees that outgrew them.

This slideshow requires JavaScript.

Next we have the mid august garden. Everything was planted a bit late. I show how the okra transplant went, and they did fine. I wanted to transplant some more but didn’t get time. In these pictures you will see some sun flowers that are doing well, that is until I dropped small tree’s down on two of them. Also you will see an ear of corn, a small cantaloupe, a few small water melons, some small squash. There are other flowers that were planted. The last two weeks have been really wet and mild for August. They have been getting rain showers almost every day. So we have not had to do much irrigation. A tomato worm stripped almost all the tomatoes. We dusted them with 7 dust and now have to wait for more new tomatoes. Last time I was in I had seen that one plant had been stripped, I should have dusted them then. Also one water melon had been munched on by what looks like most likely a terrapin turtle.

This slideshow requires JavaScript.

Zai Square Foot Gardening 4

This is middle of July report and will be the end of July report.

I shot these in a hurry and some came out blurry. I’m also a poet and didn’t know it, just now lol.

I inspected the corn box, some of the corn I planted last time was beginning to poke upwards but was being shaded by the beans. The beans are thriving. Some of the sun flowers are coming up next to the corn box. Some other flowers I planted are coming up.

The carrots didn’t come up again. No luck with carrots this year or onions from seed.

The Survival
Pod Cast
A great pod cast I listen too and recommend.
Off Grid Net A good forum I use.

WANTED! Comments. Not wanted! Compliments. If you want
your comment to be accepted first you must not be a spammer that WordPress recognizes and second you need to comment
specifically on some of the article’s specific material or facts.

Okra is doing well, 2 of the 4 pepper plants are doing well. Next time in I will transplant some okra. Radishes did well so far. All vine plants doing well. Tomatoes doing well so far. All herbs died. Lavender died. One sunflower has a flower head and I forgot to get a pic. All the Marigolds are doing well and flowering but are not growing larger yet. Sugar beats didn’t come up. Either its too warm for germination or the seeds that were left over from last year are bad.

I’m still hoping to plant pumpkins. I will be planting cold weather stuff probably middle to end of august.

We are watering every day in the evenings by pumping from pond.

This slideshow requires JavaScript.

I have a new idea about how to setup the 50 gal rain barrels. Gerry Cerda gave me an idea. He said I should make a X leg style frame and put the barrel on its side in the top part of the X. I’m also thinking that if I make the X large enough I can place some bendable sheet material on top of the barrel and X for rain catch. With the barrel on its side I can easily add a facet tap at the bottom. I can use the larger hole on top for filing or cut a hole on top, which is where the rain would come in anyway. Each barrel done this way will collect about 10 to 12 gallons in a 1 inch rain.

Here is an idea I have for an elevated hot box. Next year I may have this ready to go before early spring. The idea is that you can start plants earlier as if you are planting from seed one growing zone to the south. Then transplant young plants. This only works for certain plants that can take being transplanted. But it can save a lot of money. I found the trays on the internet for 82 cents per tray. Each tray has 6×9 holes. I could start about 500 to 1000 plants in this one hot box.

This next set is August 3rd photos. I installed some steel post around the corn box so that I may if needed wrap it in chicken wire to protect it from coon invasion. I think I transplanted some okra. The okra pulled up so that it was basically plant and main root with almost no dirt. I transplanted two together this way into square foot holes. Later photos show that they did survive the transplanting. Okra is a plant that is about as hardy as a weed. Carrots didn’t seem to come up but later I seem to see some carrot like plants in that mound. I’m waiting to see if something comes of the carrot seed I planted. I actually think the carrot soil might be better off a bit more sandy.

This slideshow requires JavaScript.

Irrigating the Garden 2013

Well, I began by looking into different ways to water the garden this year on
Gary Tuck’s land. We have a 1 acre pond next to the garden so this was the obvious choice. Yes there is a well nearby that they use for household water but it is shared with the neighbors, so it was not an option.

Drilling a well of any kind just for the garden is pretty much out of our budget. I would like a hand dug well or maybe we will try to drill one with water pressure and pvc pipe sometime. Drill your own water well.com and Drill cat.com look like good sites for more info. One thing I might do is rent a 90lb pavement breaker, air powered and compressor with hoses and bits. $140 for 24 hour rental. Then just try to see how deep we might get in 24 hours. That is about a 5′ dia. well.

The Survival
Pod Cast
A great pod cast I listen too and recommend.
Off Grid Net A good forum I use.

WANTED! Comments. Not wanted! Compliments. If you want
your comment to be accepted first you must not be a spammer that WordPress recognizes and second you need to comment
specifically on some of the article’s specific material or facts.

Rain catchment is still a possibility. Rain Saucer is an expensive option for gathering water into our three 50 gal barrels. I’m sure I can come up with some material and make an inverted pyramid shape. One gallon of water is .133681 cubic feet. Converting that to cubic inches we have .133681*1738 or 231 cubic inches. In 4’x4′ area we have 2304 square inches which in a 1″ rain is 2304 cubic inches. 10 gallons in a 1″ rain which would fill one rain barrel after 5 to 6 1″ rains. Think these barrels actually hold 55 gallons.

Another idea is to construct a pole shed just for this purpose. Using 4×8 roofing sheets we could do one that is say 16×8 lean to style. This would give us 18,432 cubic inches in a 1′ rain. 79 gallons in a 1″ rain. This would more than fill one barrel and it might take several rains to fill all 3 barrels.

I looked into solar powered pumping and found on Real Goods a $110 12 v pump, $250 in solar panels for it, and a $130 controller. Now the pump can pump continuously while it has power and even run when there is no water and not burn up the pump. I think it was self priming as well. Granted it pumps slowly at like 1gpm or 60gph or less depending. So it would take it about 5 hours to fill the 300 gallon of tank space we have now. This would be a $500 solution. Or if you add our tanks and line a $650 solution.

Sump pump and pressure tank is another solution which would require 120v power run to a pump house. $1000 solution at least.

Hand pump is one solution and I still intend to experiment with this. $80 for hand pump $20 for foot valve. $40 for pipe. $30 for misc. fittings and stuff. This is a $170ish solution.

A person can get some 12v transfer pumps and one we might use for this cost $80 and can be found at Harbor Freight or Tractor Supply. It doesn’t have great draw or head distances. It isn’t all that fast but would work. These run about 2 hours before needing a rest so that they won’t burn up.
A small solar panel and battery and controller could be setup to supply enough power to run it for a few hours every day maybe. It would work but still not a great solution.

What we decided on for now is to purchase gasoline powered pump, pipe, fittings and quick connects. We also bought a 100 gallon stock tank, a 30 gallon tub and three 55 gallon rain barrels. So about 300 gallons of storage. And this cost me about $300 total thus far. The engine powered pump is 4 cycle, 1.5 HP, 1″, clear water, 1800 GPH. We had an old trimmer mower with bad engine and with the engine remove we set the pump on this for easy movement between the garden and storage at the house. Apparently this pump will fill 300 gallons in about 30 minutes of operation. It wasn’t as noisy as the manual claimed. It can produce pressure of up to 45 psi.

We still need to add garden hose spigots to each container at the bottom for gravity feed. We also need to rig our outflow from the pump to garden hose so that we may run sprinklers. We have two yard sprinklers. Another thing we may try is some ditches next to each row of plants. We would then flood the ditches.

One thing that has been suggested to me for the intake from the pond is that we build a box from hardware cloth put the intake in the top of this and floats on top. This keeps the intake just below surface and yet if the water drops too much the cage rest on bottom and keeps the intake above the silt. One could also hammer a couple of rods through the cage to keep the float in one place.

Garden photos, looking a bit dry until we watered.

This slideshow requires JavaScript.

Show how we put the pump together for quick hookup and removal and transport.

This slideshow requires JavaScript.

Demonstrating the use of the pump and pond and lines. Filling the 300 gallons of tanks. Took 30 minutes to fill the tanks and 30 minutes to flood/spray the garden. I can buy non-pressure compensating drip emitters and soaker hose. So I can gravity flow to drip emitters. Will try that later.

This slideshow requires JavaScript.

Zai Square Foot Gardening 3

These first images were taken somewhere around 6/10/13 by Gary’s wife Rachel Tuck. Also got a few of our beloved guard dog Shasta.

This slideshow requires JavaScript.

WANTED! Comments. Not wanted! Compliments. If you want your comment to be accepted first you must not be a spammer that WordPress recognizes and second you need to comment specifically on some of the article’s specific material or facts.

Here we have 3 volunteer tomatoes and a volunteer squash. These had sprouted up from the compost pile where scraps had been tossed.

The rest of the photos in this article where taken on 6/20 6/21.

This slideshow requires JavaScript.

The Survival Pod Cast A great pod cast I listen too and recommend.
Off Grid Net A good forum I use.

This next one is the corn/bean box. I first planted 3 types of corn and green beans. I think I planted too shallow. Much of it didn’t come up. This time in I planted more corn deeper about 1″ and a different kind of bean, purple lima maybe. I did this to fill in the dead space.

I have a feeling I was planting everything too shallow. First, this soil mix is loose so plants will find their way up. 2nd, its dry because its loose if not watered daily. So the first 1/2″ really dry’s out badly. Especially in the mounds.

This slideshow requires JavaScript.

Next I show digging and mixing. I dug two 1’x1′ hole and one 2’x3′ hole. This is the first time I dug a 2’x3′ hole. This is more efficient overall. Also I want to reserve the 1’x1′ holes for plants that require 1 for 1f2 or more than 1f2. If plants can be planted more than one per square foot then 2×2 or 2×3 or 3×3 holes might be a better way to go. In the 2×3 hole I planted sugar beats and reddish lima beans. The digging was tougher this time to go deeper. That clay layer at about 6″ deep had really hardened up.

This slideshow requires JavaScript.

Next I show the fish I caught while gardening. It reached a point where I couldn’t keep a worm on a hook, so I stopped for 30 minutes and caught most of those. One is a 1lb bass of some type. One small one was a crappie I think. One larger one was a sun perch. The rest were bream. I really need to get a worm bed started. I need to use about 5″ of my soil mix covered by cardboard, wood, insulation and such. Though I’m finding worms in the yard waste compost but not so much in the manure. I find lots of grubs in either, but more grubs in the manure. I have not had much luck catching anything on a grub yet the grubs seem to be eaten off the hooks.

This slideshow requires JavaScript.

These next photos are of fishing bank locations where I trimmed the weeds down low. I trimmed paths to the bank fishing spots. The one with the chair and bucket is where I caught the fish this day.

A couple of wide view shots of the garden.

This slideshow requires JavaScript.

Some shots of herbs that were planted. The herbs do not seem to be
thriving yet.

This slideshow requires JavaScript.

Next I show the irrigation system I have begun. I bought one 100 gallon stock tank used $50. One 30 gallon stock tub $34. Three 50 gal white rain barrels $15 ea. We can remove a plug from the stock tank and gravity flow to the plants. We can for now siphon from the 50 gal drums and dip from the 30 gallon tub.

The above image is a 1″ clear water pump, 4 cycle, 1.5 hp, 1850 gph $155. I also picked up 100′ of black plastic pipe $30, other fittings $15, and quick connects for both sides $17. So far we have around $300 into the irrigation system.

This slideshow requires JavaScript.


This slideshow requires JavaScript.

I planted 4 types of pepper plants in 4 square feet.

This slideshow requires JavaScript.

In these photos I planted carrots again, the ones I planted last time didn’t even come up. I figure they were too shallow and too dry. I planted sugar beats, beans, onions, sun flowers and flowers. Flowers are for attracting pollinators.

This slideshow requires JavaScript.

Sunflowers, some were planted in the top of the compost pile just to see how they might do and they all came up well. I may transplant them next time I’m in.

This slideshow requires JavaScript.

Here I transplanted squash and cucumbers. A few minutes after the transplant they laid over completely. About an hour later they where standing back up and looking well.

This slideshow requires JavaScript.

Tomatoes doing well.

This slideshow requires JavaScript.

All vine seeds came up, about 99% germination on those. I am very happy with the vine plants. I may need to do thinning next time I’m in.

This slideshow requires JavaScript.

Misc, okra, radishes, spinach, path to/from garden.

This slideshow requires JavaScript.