Well, it has been around 2 months since I got myself moved to the Tampa area. My wife and kids have been here a month or so longer though. I won't speak for them here but I think generally everyone is happy.
The weather has cooled off and is beautiful. When first getting here it was hot but that was expected. It was bearable because we didn't really need to spend much time outside then.
The area is quite pretty around the northern / north eastern Tampa area. We are still house hunting and there are many pretty lakes and ponds along with plenty of Spanish moss. The hunting is going slow but we are hoping to find a house that is really good fit for our family.
The current apartment complex isn't bad overall; they keep it picked up and well groomed. I just don't like living in apartments though - just not enough room. Downside is one neighbor seems to yell a lot which is quite audible through the walls. Can only pray for them - haven't really met them. Otherwise, the complex is pretty quiet. I do wish there were washers/dryers in the units though - having to cart the laundry around is pretty inconvenient and expensive. I pray for my wife that it goes well since she is the one with the best availability to handle it.
The job side of things is ok but not quite as good as I hoped; at least not yet. I continue to hope that I can get involved in a way that I grow technically. I can only pray about that. It may just take time and patience on my part. With a totally distributed team, it is a bit awkward and even isolating at times. It is hard to justify a ton of interaction with those sitting around me when to a large degree our work isn't crossing much at this moment. That has changed a little bit (to the better) as I need some reasonable guidance on what direction cloud computing is moving in the organization. I am forced out of my quiet comfort zone some days and have to "spam" groups standing around to determine who knows the right person to talk to regarding various things. I'm starting to meet people that way which is a plus.
I think my biggest issue right now is traffic and travel time. It takes me about an hour to go ~15 miles. That is taking a few "short" cuts but not speeding like a maniac though. I think the traffic signs are there to taunt you - as in "he he, you could go this fast if there wasn't this much traffic and numerous accidents in front of you" Two notable days were: one where I was passed about 3 times by a guy on the sidewalk with a shopping cart. He was walking slow and had a limp too. A different day it was an older bicyclist that passed me on the sidewalk several times. At other places where traffic isn't heavy, you get people blowing by at 20mph+ over the speed limits. They like to weave around people. There are also tons of people who race down the empty lanes and then force themselves in front of people. I can only pray that people learn to respect others and give up some of the "life revolves around me" attitude. These types of attitudes explain why insurance is higher in our county - the amount of speeding and accidents is pretty outrageous. I will say that I can understand how the traffic can wear on you - especially when many of the lights are REALLY long. If you miss a light, you are generally going to be sitting there a while. I think this is why so many people run the red lights here. I don't know if they could time lights better or not but the overall effect is you sit at red lights and then you sit at green lights because the traffic on the far side of the light is backed up as well. Throw in some accidents and pedestrian traffic and it isn't a relaxing drive. I'm hoping I can do some work from home at some point.
We did find a great church (Idlewild Baptist Chuch) though and are hoping that we can find a house that keeps us close enough to do regular activities with along with make my work commute a bit shorter. We do miss folks at our old church - Staples Mill Road Baptist Church still in VA but the folks here at Idlewild seem to have the same heart for Christ and many opportunities to help people.
The church is much larger than we are used to which is good/bad. Trying to get/stay involved with a life group but struggling with other stuff (kids schooling mainly) right now. One more thing that I hope settles down soon.
Overall though, we are liking things. We still aren't settled enough to really enough the things around us - activities to do, places to visit, etc. Hoping we can enjoy those things soon.
I wanted to end this with a bible verse but I see my wife struggling to get laundry stuff around so I must go now. Hope God blesses you today though.
Scott
Software Development, family, religious, hobby, fun and humorous items.
Sunday, November 6, 2016
Tuesday, September 13, 2016
Job change and relocation complete - Florida here we are!
We had decided to move closer to my family in SW Florida a while ago but had not really decided when to make the move. Well, about 2 weeks before the K12 schools started in Fl we decided to make the move. My wife was awesome in finding some temporary housing and in under 2 weeks I had them down in an apartment while I still job hunted.
Last month, I interviewed with a large company and decided that it was a good move. A number of other good opportunities were available but this one just seems like the best fit from a "whole family" perspective. Not an easy choice by any means and even harder when you are in the middle of trying to further your in-progress relocation.
I will say that there were many things that came together in just the right way but many other things were pretty painful. The job and housing came together with amazing timing. There are huge praises regarding those. Now the fact that my wife and kids were in Fl which left me with all the decisions regarding getting out of our Virginia house was pretty painful. For my 2 week notice with my previous employer, I worked on packing/organizing in the evening for 2-3 hours each night. I had my in-laws help with some items as well which was great. Probably the biggest problem/praise was dealing with the bulk of 16 years of accumulation in the house/garage. It was an enormous undertaking getting it all of of the house. We decided to get the house listed for sale by a prior church friend and set a set of Sept 15th to be listed. This gave me around 9 days of full time attention to get the house packed and into a POD, our travel trailer, my mother in-laws house/garage or into our truck/utility trailer for a final run before I start the new job. I timed it so I would still have around 1 week of time to "relax" before the new job but that really means dealing with drivers licenses, and car/truck/motorcycle/trailer/travel trailer titles, licenses and insurance.
Anyways, back to the boxing and storing.. I have to give much praise for our friends - the Martinez family. There were such a wonderful blessing that words are not enough. I would not be remotely ready without them and would likely have ended up in the hospital trying to do it alone. I am still in a ton of pain from some of the stuff but I am SO grateful for the help I received which was far from easy on them as well.
We ended up packing a 8ft x 8ft x 16ft amazingly tight (thank you..). That took the bulk of what we didn't move via Uhaul and pickup truck in 2 prior Fl round trips. I did end up with a pretty large truckful for my last "one way trip" prior to the job starting. I put a good amount of stuff in our travel trailer and a little at my mother in-laws.
I made about 2 1/2 heaping trailer fulls of junk to the dump. A lot of it was little odds/ends of wood working projects from long ago which "could still be useful for another project". Lesson learned is to throw away the odds/ends and just get a bit of new wood/stuff as needed. It is probably cheaper in the long run that way and way easier on the back.
I'm hoping that the dreams of boxes and strapping tape running out soon end.
The 10-14 hour days packing over the last week+ were not fun. Pretty much every muscle hurts. I did lose about 5-7 lbs which was the only major plus I can think of. My phone indicated that on a few days I carried it with me that I walked over 8 miles in a day.
Getting a POD (Packrat actually) is a great way to move stuff. It will get shipped to a storage location and held there until we get a house. This was way easier than carting the remaining stuff via Uhaul and having to do multiple load/unloads in the process. About the only 2 negatives are cost (still pretty pricey) and size. I wish we had been able to go a bit more than 16ft in length - 20-24 ft probably would have keep me from needing to store in the travel trailer and mother in-laws. Some of the moving trucks are larger but even more expensive so it was a trade-off. Getting a nice convertible hand truck from Sams Club was good along with some Harbor Freight dollies and a few other moving items. ** Boy am I glad I didn't buy a milling machine yet (1800-2400 lbs) !!! **
Having time to do things at an non-rushed pace would have been great but our choices didn't allow it. Having great friends made that bearable.
I would recommend not waiting to do some of the "hard stuff" like drywall patches, painting and removing things like the surface mounted welding wiring and RV wiring you are going to take with you. I ended up getting up at 5:15am the day I was leaving to sand a drywall patch and paint it since the patch wasn't dry by midnight when I was trying to finish up. Stuff like that makes for a difficult long drive. In my defense, we did have a couple days of rain which did put of a few of the tasks.
Anyways, a brief trip in October ought to allow us to get the bulk of the remaining stuff and travel trailer. Only major thing which needs to wait on a house will likely be my wifes favorite roll top desk.
A new house is still in the research phase. Tough decisions and more trade-offs. We are having some issues with some aspects of the local schools. I think the police are now going to be at the bus stop for the middle schoolers - a few of them are just out of control. The schools are overcrowded and the buses are a big issue in general - the behavior of some children just puts things over the top. I feel very sad for my kids and many other on the buses. We didn't see these types of problems in VA to this large of an extent.
So much more to do but getting there.
Thanks for reading,
Scott
Last month, I interviewed with a large company and decided that it was a good move. A number of other good opportunities were available but this one just seems like the best fit from a "whole family" perspective. Not an easy choice by any means and even harder when you are in the middle of trying to further your in-progress relocation.
I will say that there were many things that came together in just the right way but many other things were pretty painful. The job and housing came together with amazing timing. There are huge praises regarding those. Now the fact that my wife and kids were in Fl which left me with all the decisions regarding getting out of our Virginia house was pretty painful. For my 2 week notice with my previous employer, I worked on packing/organizing in the evening for 2-3 hours each night. I had my in-laws help with some items as well which was great. Probably the biggest problem/praise was dealing with the bulk of 16 years of accumulation in the house/garage. It was an enormous undertaking getting it all of of the house. We decided to get the house listed for sale by a prior church friend and set a set of Sept 15th to be listed. This gave me around 9 days of full time attention to get the house packed and into a POD, our travel trailer, my mother in-laws house/garage or into our truck/utility trailer for a final run before I start the new job. I timed it so I would still have around 1 week of time to "relax" before the new job but that really means dealing with drivers licenses, and car/truck/motorcycle/trailer/travel trailer titles, licenses and insurance.
Anyways, back to the boxing and storing.. I have to give much praise for our friends - the Martinez family. There were such a wonderful blessing that words are not enough. I would not be remotely ready without them and would likely have ended up in the hospital trying to do it alone. I am still in a ton of pain from some of the stuff but I am SO grateful for the help I received which was far from easy on them as well.
We ended up packing a 8ft x 8ft x 16ft amazingly tight (thank you..). That took the bulk of what we didn't move via Uhaul and pickup truck in 2 prior Fl round trips. I did end up with a pretty large truckful for my last "one way trip" prior to the job starting. I put a good amount of stuff in our travel trailer and a little at my mother in-laws.
I made about 2 1/2 heaping trailer fulls of junk to the dump. A lot of it was little odds/ends of wood working projects from long ago which "could still be useful for another project". Lesson learned is to throw away the odds/ends and just get a bit of new wood/stuff as needed. It is probably cheaper in the long run that way and way easier on the back.
I'm hoping that the dreams of boxes and strapping tape running out soon end.
The 10-14 hour days packing over the last week+ were not fun. Pretty much every muscle hurts. I did lose about 5-7 lbs which was the only major plus I can think of. My phone indicated that on a few days I carried it with me that I walked over 8 miles in a day.
Getting a POD (Packrat actually) is a great way to move stuff. It will get shipped to a storage location and held there until we get a house. This was way easier than carting the remaining stuff via Uhaul and having to do multiple load/unloads in the process. About the only 2 negatives are cost (still pretty pricey) and size. I wish we had been able to go a bit more than 16ft in length - 20-24 ft probably would have keep me from needing to store in the travel trailer and mother in-laws. Some of the moving trucks are larger but even more expensive so it was a trade-off. Getting a nice convertible hand truck from Sams Club was good along with some Harbor Freight dollies and a few other moving items. ** Boy am I glad I didn't buy a milling machine yet (1800-2400 lbs) !!! **
Having time to do things at an non-rushed pace would have been great but our choices didn't allow it. Having great friends made that bearable.
I would recommend not waiting to do some of the "hard stuff" like drywall patches, painting and removing things like the surface mounted welding wiring and RV wiring you are going to take with you. I ended up getting up at 5:15am the day I was leaving to sand a drywall patch and paint it since the patch wasn't dry by midnight when I was trying to finish up. Stuff like that makes for a difficult long drive. In my defense, we did have a couple days of rain which did put of a few of the tasks.
Anyways, a brief trip in October ought to allow us to get the bulk of the remaining stuff and travel trailer. Only major thing which needs to wait on a house will likely be my wifes favorite roll top desk.
A new house is still in the research phase. Tough decisions and more trade-offs. We are having some issues with some aspects of the local schools. I think the police are now going to be at the bus stop for the middle schoolers - a few of them are just out of control. The schools are overcrowded and the buses are a big issue in general - the behavior of some children just puts things over the top. I feel very sad for my kids and many other on the buses. We didn't see these types of problems in VA to this large of an extent.
So much more to do but getting there.
Thanks for reading,
Scott
Thursday, July 14, 2016
Prepping for change - hoping to relocate
Well, we have made a decision to move down to Florida to be nearer to family. It is a tough decision and still requires many things to happen. I'm currently job hunting for positions in the Tampa area. We decided to go ahead and start packing up non-essential stuff (lots of my books fit that criteria from what my wife says). We are doing house stuff - starting to paint bedrooms right now. My deck project not long ago was part of this preparation process. Things are moving along but it just feels so slow at times - until I find a job I am sure. We are still figuring out how we will handle things if I get a position and go down now. We have been talking with a nice realtor and have seen some nice houses (online) but the job must come first. If I find the right position I will likely haul our travel trailer down and stay in it - that will allow me to start the new job and look at houses in the evening or on weekends. If it works out well we can all be down there before my kids need to start school - that would be a blessing. Whatever happens we will just roll with it though.
I know our friends are really sad that we are trying to relocate. We are both sad that we won't seem them as often but are also excited about the potential great things that will come from this. I'm going to aim for a house with an extra room or 2 so friends and family can visit (hint hint to those in VA and MI).
[update 2016/8/15] Well, we now are partially relocated near Tampa, Florida as of 8/6/16. The kids were able to start school on day one. Working out an apartment, registering for school and moving in under 2 weeks was a miracle in itself. My wife was amazing in this process and coordinated so much in so little time that I can't praise her enough. Our kids are doing well (day 1 of school had everyone in tears though) and I can't say enough about how they recovered from the very fast decision to move. I'm still in Virginia while I interview, keep up the house and continue to prep for a final move once an appropriate Tampa area job is found. I miss the family bunches.
[update 2016/08/16] Things are looking up job hunt wise and we are very happy about that. Note to self - why did I accumulate so much stuff in the garage? Hoping something less than a full tractor trailer is needed for what remains in the house and garage. Might still be leaning toward holding onto the current house until we find a new house just to reduce the need for a large (or multiple storage units). We are pretty sure the house will sell pretty quick once we declutter and get it on the market. It is time to start looking into mortgage information; based upon the housing market in our target area we will have to move fast when a nice house comes available.
[update 2016/08/24] Yeah, I accepted a good job offer in the last few days. There was a hard choice to make but I think I chose what is in my families best interest right now. Still dreading the remaining packing. I'll be starting the new job within a month. I've traveled around 4000 miles in 18 days while carting my family and many belongings to our temporary apartment. Heading back to VA, I have been able to make the one-way trip in just under 14 hours straight. That is wearing me down quickly but I am hopeful to only have one more main trip to the new place. Hopefully, everything remaining will be in a POD and stored somewhere soon. At that point we will we house hunt - we are starting that a bit now but it is posing challenges in breadth of available houses.
I know our friends are really sad that we are trying to relocate. We are both sad that we won't seem them as often but are also excited about the potential great things that will come from this. I'm going to aim for a house with an extra room or 2 so friends and family can visit (hint hint to those in VA and MI).
[update 2016/8/15] Well, we now are partially relocated near Tampa, Florida as of 8/6/16. The kids were able to start school on day one. Working out an apartment, registering for school and moving in under 2 weeks was a miracle in itself. My wife was amazing in this process and coordinated so much in so little time that I can't praise her enough. Our kids are doing well (day 1 of school had everyone in tears though) and I can't say enough about how they recovered from the very fast decision to move. I'm still in Virginia while I interview, keep up the house and continue to prep for a final move once an appropriate Tampa area job is found. I miss the family bunches.
[update 2016/08/16] Things are looking up job hunt wise and we are very happy about that. Note to self - why did I accumulate so much stuff in the garage? Hoping something less than a full tractor trailer is needed for what remains in the house and garage. Might still be leaning toward holding onto the current house until we find a new house just to reduce the need for a large (or multiple storage units). We are pretty sure the house will sell pretty quick once we declutter and get it on the market. It is time to start looking into mortgage information; based upon the housing market in our target area we will have to move fast when a nice house comes available.
[update 2016/08/24] Yeah, I accepted a good job offer in the last few days. There was a hard choice to make but I think I chose what is in my families best interest right now. Still dreading the remaining packing. I'll be starting the new job within a month. I've traveled around 4000 miles in 18 days while carting my family and many belongings to our temporary apartment. Heading back to VA, I have been able to make the one-way trip in just under 14 hours straight. That is wearing me down quickly but I am hopeful to only have one more main trip to the new place. Hopefully, everything remaining will be in a POD and stored somewhere soon. At that point we will we house hunt - we are starting that a bit now but it is posing challenges in breadth of available houses.
Philippians 4:6-8
6
Do not be anxious about
anything, but in every situation, by prayer and petition, with
thanksgiving, present your requests to God.
7
And the peace of God, which
transcends all understanding, will guard your hearts and your minds in
Christ Jesus.
8
Finally, brothers and sisters,
whatever is true, whatever is noble, whatever is right, whatever is
pure, whatever is lovely, whatever is admirable—if anything is excellent
or praiseworthy—think about such things.
Tuesday, June 14, 2016
My book case - Non-IT
Ok, this post documents most of the remaining books on the book shelves. The content mainly covers Christianity, Home/Repair, Metal working, Gardening, Mat and Science.
Here is a link to my previous post covering my IT related books.
I'm not going to document all the magazines and the remaining books - a combination of family "fun reads", cook books and other miscellany.
Here is my bible (I find the "New American Standard Bible" pretty easy to read) and a few other books we have. One nice thing about God is that God doesn't need to change - one book tells it all. Oh, we do have other books because I like to understand historical context, etc at times as well. For better or worse, I don't think I could ever consider myself a bible scholar though. I find myself having to read a lot more IT technical books to keep up with the changing times.
Here are other Christianity related books on the other side of the bookcase. Most of these are my wife's.
I had a brief plan to do a bit of a career change from general IT into Bioinformatics but decided that the combination of a time consuming primary job along with the need to spend quality time with my family outweighed my desire for change. On a different note, when studying material like this I find it hard *not to see* God's handiwork.
For as many barn/shed books as I ended up with (cleaned out my fathers stash when they moved a while back... I couldn't say no), I should have built the workshop I planned. Maybe after we get moved.. I found most of the deck books either had overly fancy projects or didn't really meet current construction codes - googling for stuff kept me code compliant but you still have to double check things. The books on electricity and concrete work helped me out with a couple projects.
Here are a bunch of my "hobby" books. I will say that I am hugely impressed with how much raw data is crammed into the "Machinery's Handbook" - it is purely a reference but helpful too in a sort of "find what you don't know" kind of way. At some point, I would still love to build a CNC router and maybe work with some milling, cutting, plasma cutting type tools.
Most of these math books are related to my math minor. The more "business statistics" related books are my wife's. On a rare occasion I pull one of these out because I want to remember how to solve some problem or another. I had hoped my son might read these a little bit (he does like math) but these just don't have the draw of his fun reading or drawing activities.
The physics are from my undergrad degree and the others are actually text books I got from my dad when they moved. The old books are dated technology wise but still have some interesting things here and there. It is kind of interesting to see the difference in writing styles between ~1960's text books and technical writing today. The old text books are a bit dry in style but I have to wonder if the "easier reading style" nowadays isn't required because everyones attention span is so low. I did laugh at some article indicating that the average adult has around an 8 second attention span while a gold fish has a 9 second attention span.
Here is the last of the stuff I care to document. phew. I do like gardening and hope I will still again have time to do some once I find an appropriate job and relocate as desired.
I hope you find something enjoyable out of all this. Thanks for reading!
Scott
Proverbs 18:15
15 The heart of the discerning acquires knowledge, for the ears of the wise seek it out.
Here is a link to my previous post covering my IT related books.
I'm not going to document all the magazines and the remaining books - a combination of family "fun reads", cook books and other miscellany.
Here is my bible (I find the "New American Standard Bible" pretty easy to read) and a few other books we have. One nice thing about God is that God doesn't need to change - one book tells it all. Oh, we do have other books because I like to understand historical context, etc at times as well. For better or worse, I don't think I could ever consider myself a bible scholar though. I find myself having to read a lot more IT technical books to keep up with the changing times.
Here are other Christianity related books on the other side of the bookcase. Most of these are my wife's.
I had a brief plan to do a bit of a career change from general IT into Bioinformatics but decided that the combination of a time consuming primary job along with the need to spend quality time with my family outweighed my desire for change. On a different note, when studying material like this I find it hard *not to see* God's handiwork.
For as many barn/shed books as I ended up with (cleaned out my fathers stash when they moved a while back... I couldn't say no), I should have built the workshop I planned. Maybe after we get moved.. I found most of the deck books either had overly fancy projects or didn't really meet current construction codes - googling for stuff kept me code compliant but you still have to double check things. The books on electricity and concrete work helped me out with a couple projects.
Here are a bunch of my "hobby" books. I will say that I am hugely impressed with how much raw data is crammed into the "Machinery's Handbook" - it is purely a reference but helpful too in a sort of "find what you don't know" kind of way. At some point, I would still love to build a CNC router and maybe work with some milling, cutting, plasma cutting type tools.
Most of these math books are related to my math minor. The more "business statistics" related books are my wife's. On a rare occasion I pull one of these out because I want to remember how to solve some problem or another. I had hoped my son might read these a little bit (he does like math) but these just don't have the draw of his fun reading or drawing activities.
The physics are from my undergrad degree and the others are actually text books I got from my dad when they moved. The old books are dated technology wise but still have some interesting things here and there. It is kind of interesting to see the difference in writing styles between ~1960's text books and technical writing today. The old text books are a bit dry in style but I have to wonder if the "easier reading style" nowadays isn't required because everyones attention span is so low. I did laugh at some article indicating that the average adult has around an 8 second attention span while a gold fish has a 9 second attention span.
Here is the last of the stuff I care to document. phew. I do like gardening and hope I will still again have time to do some once I find an appropriate job and relocate as desired.
I hope you find something enjoyable out of all this. Thanks for reading!
Scott
Proverbs 18:15
15 The heart of the discerning acquires knowledge, for the ears of the wise seek it out.
Sunday, June 12, 2016
My book case - IT related
Here is the start of some posts documenting my personal "library". It will take some time to document them all. I thought it would be interesting to post these - some of the books are probably not very common. I have many aging tech books I've gathered over 20 years as well. I'm doing this in preparation of an eventual family relocation for which I may have to part ways with some books.
Here is a link to my second post for my non-IT items.
I had plenty of interest in OS design back in college but those books don't get used now. The more general UNIX/Linux related books and Korn Shell sometimes get pulled when there is a need but often it is easier just to Google for things. I never did any Motif related development but I accepted those from my brother in-law since they seemed interesting at the time but I never took the time to do anything with them. There are a few times I've gone back to the Advanced Programming in UNIX book - usually when I was trying to figure out some problem in Open Source app I was trying to get working at home (some years ago). I think I went to it once for a work related issue I was researching once or twice. The mainframe related books are my wife's - I only briefly worked with a mainframe and only at an operations related job for a telecom early in my IT career.
I've always had an interest in language/compiler development. One of my prior jobs did involve building parsers and scanners though which was enjoyable. The PCCTS (Purdue Compiler Construction Tool Set) is the ancestor of ANTLR. I always found the creator/author, Terrance Parr, very interesting - never met him but lurked on sites where information he (and a number of others) posted often helped me. I've thought about buying the ANTLR 4 reference book but since I am not doing any compiler/parsing related work right now it seems like a bit of waste (and I have little extra time while trying to pick up more common new technology).
Some of these I bought when working on projects and wanted to reference or research. Others are from college or general interest (wife or me). I have gone through a number of "Oracle - The complete references" over the years but I think this Oracle 10g is my last. Now it is just easier to Google for material and the "Tome" gets heavy carting around. I find some additional useful Oracle related content here at times.
No, the FORTRAN and COBOL books are not mine - they are my wife's. She did tell me I could get rid of them. I do like to read up on languages but I rarely use most of them. My copy of "The C++ Programming Language" was very heavily used in the past but is pretty dated now and I don't use C++ at the moment. I did recently pick up the "Effective Modern C++" because I wanted to brush up on things - WOW is my best description of the amount and type of changes. The relearning curve is a bit steep. I keep hoping to find a moment to use R in some practical way. I have a few ideas that I would like to try out but no time and too hard of a sell to talk with management about. I picked up the .NET book because I've had to do a bit of coding related to MS FIM but it wasn't substantial. I will finish the book at some point but other needs/books are more pressing.
I've had a long term interest in Assembly language but generally little time to use. I was hoping to generate some interest with my kids (note the Raspberry Pi related items) but I think I am on my own there. The TRS-80 Assembly language was the 2nd language I taught myself - after the built-in basic started to bore me. I picked up the Microprocessors Vol I & II a long time ago and found the content interesting but never did anything useful with the information. They might make good geeky "coffee table" books. I did write a couple Scala programs/utilities a while back at work after reading the "Programming Scala" book but feel it would be a mistake to push it too much since we are understaffed and others don't have the time to pick it up at this point. I am planning on playing with it further outside work when time permits to toy with some Akka ideas.
My college degree included a good amount of electrical engineering/computer engineering courses so some of this is related to that. Some of it was interest in HPC for a period of time but I didn't have a job in that. The Arduino/AVR related books are current hobby interests if/when I find time.
A couple of these books go pretty far back - see if you can figure out which 2 are the oldest. I didn't end up writing many graphics programs - I ended up doing some MFC related enhancements/bug fixes years ago though for work.
I started with the "Algorithms" book by Sedgewick but wish I had gotten the "C" version instead of Pascal. Most of these are mine and those that my wife got during college I browsed out of interest anyways.
I do tend to get the study guides but never seem to find the time and motivation to take the tests. Anyways, they do contain good content and are still beneficial. I was a little concerned by the number of errata for the OCA study guide. I wish the content had been better verified before publication.
Most of these are what I acquired related to work. A couple are books my wife picked up. I've done more of the back end development at my current job but debugged many JSP's and am now doing plenty of debugging and maint on a JSP/jQuery/Spring related application.
Regarding JSF books; I did start a push for JSF2 as a standard but that stalled - not enough developers are experienced in it. I've been hoping to leverage what I learned from my JSF 2.x related books but so far only some minor tools were viable candidates but it worked well. For any non-mobile internal app, I would evaluate JSF2 as a viable option. For mobile apps, it seems a little less clear cut - there is extreme flexibility in more client side Javascript/CSS based technologies (jQuery, bootstrap, etc) regarding UI and mobile/responsiveness. I've not done any real mobile development but to do so in JSF probably means leveraging mobile friendly frameworks such Primefaces mobile or ICEfaces mobile which I have not used or read about in-depth so can't form much of an opinion on. It seems that just about any consultant can do Javascript/jQuery/Dojo, etc but not JSF 2 which is why most of our outsourced work continues to use those frameworks. I do wish a long term TCO type analysis was performed to compare some competing solutions.
I picked up the "Node.js, MongoDB and AngularJS Web Development" book today after someone mentioned learning the stack might be beneficial.
I've used Spring core for a number of years and like it. I am not sure yet whether I will convert to CDI based dependency injection instead though. I would like to move to using JEE standards over other stuff if possible. I'm not sure that is viable and maybe not even a good recommendation where I am at though. It comes down to making sure that systems are maintainable and there are people with the appropriate training and knowledge. That is why I looked into Lift but decided that adding one more new technology stack was not supportable even if it would help reduce some issues we have/had. An application was recently refaced and Spring MVC was used so I picked up a book to help me understand how to better deal with it. The application wasn't done as well as was planned and now internal staff have to take over and finish/fix it.
The PHP books started with a desire to be knowledgeable and turned into a mild need when my employer bought a new system that is PHP based but the team that owned it had no PHP knowledge and little recent development knowledge so I ended up helping out for a period while they figured out how to maintain it.
I've bought a few Tomcat related books over the years and this was the last - they don't seem to help much more than what you find with Google. I've worked with Tomcat for so long now that there isn't usually much new to learn on it specifically. I say that not in a bad way but meaning that the software is very stable now and can perform quite well with minimal effort - it is an extremely impressive solution. I've had some inclination to consider TomEE as a replacement/supplement to Tomcat itself but that just means learning/leveraging JEE more than TomEE itself.
I do tend to use my CSS reference a decent amount. I usually keep it at work usually along with one or more jQuery and Javascript books. Of course, there are plenty of web sites with info but some short reference books I find to be quicker to use at times.
Here is a dump of most of the remaining tech books - most related to some current or past work need. I implemented some integration's using Apache ServiceMix and utilizing OSGi. It was somewhat painful at times. I had been trying to work out an overall integration plan to replace a commercial technology with Camel/ActiveMQ along with other technology available in ServiceMix but get pulled off for other projects before real progress gets done. Some aspects of the Open Source stack here work well but there are parts that I've not worked out details to and may require substantial work. This cover stuff like monitoring integration's, managing artifacts, handling deployments and a general developer workflow (creating/maintain/converting to OSGi artifacts). A number of books cover the technology itself but I do find information lacking more and more in how to make it all work cohesively at a business level.
I did enjoy the "Don't make me think!" book. It made a lot of sense and I wish we (my team) and others had read it before working on a couple applications.
A bit of odds and ends except for the "Seven Concurrency Models in Seven Weeks" book which I intended to include elsewhere but had misplaced in a pile of papers next to the computer. The rest of these books are a combination of my "random on-sale picks" and my wife's undergrad/MBA related items.
Additionally, some of my Ebooks include:
Anyways, hope you enjoyed my trip down memory lane.
Thanks for reading!
Scott
Here is a link to my second post for my non-IT items.
I had plenty of interest in OS design back in college but those books don't get used now. The more general UNIX/Linux related books and Korn Shell sometimes get pulled when there is a need but often it is easier just to Google for things. I never did any Motif related development but I accepted those from my brother in-law since they seemed interesting at the time but I never took the time to do anything with them. There are a few times I've gone back to the Advanced Programming in UNIX book - usually when I was trying to figure out some problem in Open Source app I was trying to get working at home (some years ago). I think I went to it once for a work related issue I was researching once or twice. The mainframe related books are my wife's - I only briefly worked with a mainframe and only at an operations related job for a telecom early in my IT career.
I've always had an interest in language/compiler development. One of my prior jobs did involve building parsers and scanners though which was enjoyable. The PCCTS (Purdue Compiler Construction Tool Set) is the ancestor of ANTLR. I always found the creator/author, Terrance Parr, very interesting - never met him but lurked on sites where information he (and a number of others) posted often helped me. I've thought about buying the ANTLR 4 reference book but since I am not doing any compiler/parsing related work right now it seems like a bit of waste (and I have little extra time while trying to pick up more common new technology).
Some of these I bought when working on projects and wanted to reference or research. Others are from college or general interest (wife or me). I have gone through a number of "Oracle - The complete references" over the years but I think this Oracle 10g is my last. Now it is just easier to Google for material and the "Tome" gets heavy carting around. I find some additional useful Oracle related content here at times.
No, the FORTRAN and COBOL books are not mine - they are my wife's. She did tell me I could get rid of them. I do like to read up on languages but I rarely use most of them. My copy of "The C++ Programming Language" was very heavily used in the past but is pretty dated now and I don't use C++ at the moment. I did recently pick up the "Effective Modern C++" because I wanted to brush up on things - WOW is my best description of the amount and type of changes. The relearning curve is a bit steep. I keep hoping to find a moment to use R in some practical way. I have a few ideas that I would like to try out but no time and too hard of a sell to talk with management about. I picked up the .NET book because I've had to do a bit of coding related to MS FIM but it wasn't substantial. I will finish the book at some point but other needs/books are more pressing.
I've had a long term interest in Assembly language but generally little time to use. I was hoping to generate some interest with my kids (note the Raspberry Pi related items) but I think I am on my own there. The TRS-80 Assembly language was the 2nd language I taught myself - after the built-in basic started to bore me. I picked up the Microprocessors Vol I & II a long time ago and found the content interesting but never did anything useful with the information. They might make good geeky "coffee table" books. I did write a couple Scala programs/utilities a while back at work after reading the "Programming Scala" book but feel it would be a mistake to push it too much since we are understaffed and others don't have the time to pick it up at this point. I am planning on playing with it further outside work when time permits to toy with some Akka ideas.
My college degree included a good amount of electrical engineering/computer engineering courses so some of this is related to that. Some of it was interest in HPC for a period of time but I didn't have a job in that. The Arduino/AVR related books are current hobby interests if/when I find time.
A couple of these books go pretty far back - see if you can figure out which 2 are the oldest. I didn't end up writing many graphics programs - I ended up doing some MFC related enhancements/bug fixes years ago though for work.
I started with the "Algorithms" book by Sedgewick but wish I had gotten the "C" version instead of Pascal. Most of these are mine and those that my wife got during college I browsed out of interest anyways.
I do tend to get the study guides but never seem to find the time and motivation to take the tests. Anyways, they do contain good content and are still beneficial. I was a little concerned by the number of errata for the OCA study guide. I wish the content had been better verified before publication.
Most of these are what I acquired related to work. A couple are books my wife picked up. I've done more of the back end development at my current job but debugged many JSP's and am now doing plenty of debugging and maint on a JSP/jQuery/Spring related application.
Regarding JSF books; I did start a push for JSF2 as a standard but that stalled - not enough developers are experienced in it. I've been hoping to leverage what I learned from my JSF 2.x related books but so far only some minor tools were viable candidates but it worked well. For any non-mobile internal app, I would evaluate JSF2 as a viable option. For mobile apps, it seems a little less clear cut - there is extreme flexibility in more client side Javascript/CSS based technologies (jQuery, bootstrap, etc) regarding UI and mobile/responsiveness. I've not done any real mobile development but to do so in JSF probably means leveraging mobile friendly frameworks such Primefaces mobile or ICEfaces mobile which I have not used or read about in-depth so can't form much of an opinion on. It seems that just about any consultant can do Javascript/jQuery/Dojo, etc but not JSF 2 which is why most of our outsourced work continues to use those frameworks. I do wish a long term TCO type analysis was performed to compare some competing solutions.
I picked up the "Node.js, MongoDB and AngularJS Web Development" book today after someone mentioned learning the stack might be beneficial.
I've used Spring core for a number of years and like it. I am not sure yet whether I will convert to CDI based dependency injection instead though. I would like to move to using JEE standards over other stuff if possible. I'm not sure that is viable and maybe not even a good recommendation where I am at though. It comes down to making sure that systems are maintainable and there are people with the appropriate training and knowledge. That is why I looked into Lift but decided that adding one more new technology stack was not supportable even if it would help reduce some issues we have/had. An application was recently refaced and Spring MVC was used so I picked up a book to help me understand how to better deal with it. The application wasn't done as well as was planned and now internal staff have to take over and finish/fix it.
The PHP books started with a desire to be knowledgeable and turned into a mild need when my employer bought a new system that is PHP based but the team that owned it had no PHP knowledge and little recent development knowledge so I ended up helping out for a period while they figured out how to maintain it.
I've bought a few Tomcat related books over the years and this was the last - they don't seem to help much more than what you find with Google. I've worked with Tomcat for so long now that there isn't usually much new to learn on it specifically. I say that not in a bad way but meaning that the software is very stable now and can perform quite well with minimal effort - it is an extremely impressive solution. I've had some inclination to consider TomEE as a replacement/supplement to Tomcat itself but that just means learning/leveraging JEE more than TomEE itself.
I do tend to use my CSS reference a decent amount. I usually keep it at work usually along with one or more jQuery and Javascript books. Of course, there are plenty of web sites with info but some short reference books I find to be quicker to use at times.
Here is a dump of most of the remaining tech books - most related to some current or past work need. I implemented some integration's using Apache ServiceMix and utilizing OSGi. It was somewhat painful at times. I had been trying to work out an overall integration plan to replace a commercial technology with Camel/ActiveMQ along with other technology available in ServiceMix but get pulled off for other projects before real progress gets done. Some aspects of the Open Source stack here work well but there are parts that I've not worked out details to and may require substantial work. This cover stuff like monitoring integration's, managing artifacts, handling deployments and a general developer workflow (creating/maintain/converting to OSGi artifacts). A number of books cover the technology itself but I do find information lacking more and more in how to make it all work cohesively at a business level.
I did enjoy the "Don't make me think!" book. It made a lot of sense and I wish we (my team) and others had read it before working on a couple applications.
A bit of odds and ends except for the "Seven Concurrency Models in Seven Weeks" book which I intended to include elsewhere but had misplaced in a pile of papers next to the computer. The rest of these books are a combination of my "random on-sale picks" and my wife's undergrad/MBA related items.
Additionally, some of my Ebooks include:
- Data Science from Scratch
- I've not gotten to this one yet
- User Story Mapping
- I've started this but moved on to more immediate work related items.
- Functional Reactive Programming
- Did a very quick read; interesting but would need to go back through it to get more out of it. Author has his own framework from what I recall. Need to look at this again.
- Akka in Action
- Read a long while back; would like to go back and read again while trying it for a practical problem.
- Liferay in Action: The Official Guide to Liferay Portal Development
- Our portal is now outsourced and based on Liferay; another application is also using Liferay but not in a public visitor way. Those are the reasons I picked this up but have not fully read it. Most of what I'm doing doesn't involve portal changes but I would like to do some portal work at some point - another reason I picked this up.
- Erlang and OTP in Action
- Read this but didn't seem practical in our environment. Still interesting though.
- Activiti in Action
- I really wanted to redesign parts of one application to leverage Activiti - I think it would be great to replace some hard-coded logic with something that might be (somewhat or even fully) maintained externally from the core application.It isn' looking like this will happen unless I take "spare time" which is non-existent.
- Enterprise OSGi in Action
- I think I got this with my paperback copy.
Anyways, hope you enjoyed my trip down memory lane.
Thanks for reading!
Scott
Saturday, June 11, 2016
Jenkins CI - promotion processes
I recently got around to implementing some Jenkins promotion processes for one application. This is the first time I setup promotions for any of our builds. It has been on my to-investigate list for a long time though.
So far, it is working out nicely. We are on an older Jenkins version for now and I think the 2.x version has some significant workflow additions which I hope to try out sometime (sooner than later). Even with the older Jenkins/promotion setup, it is nice having some workflow in place and manageable from one place. For various reasons, most of the processes are manually initiated except the first one (which results in deployment to a dev server after a build which is initiated when SCM changes are found during polling).
One thing that might be nice is a way to schedule a promotion once criteria are met. With some effort, this is probably possible with some custom code and/or more jobs but having a more direct way would more convenient. My intent with this would be to use promotion to perform deployments, outside of normal use hours, to systems used for testing/training so as to not disrupt activities. I guess another option is to change the deployment processes so that promotion simply queues up the artifacts that a separate deployment process then handles. I'll have to think that one through further; for now the recent changes are at least a positive step forward.
Another item of research is whether the promotion process definitions can be simplified/shared somehow. I didn't put time into simplifying it upfront, instead I just wanted to make sure it was correct. As long as the maintenance cost is lower than the benefits I won't complain but reducing non-development time wasters is always a plus so I will hope for continued improvement.
So far, it is working out nicely. We are on an older Jenkins version for now and I think the 2.x version has some significant workflow additions which I hope to try out sometime (sooner than later). Even with the older Jenkins/promotion setup, it is nice having some workflow in place and manageable from one place. For various reasons, most of the processes are manually initiated except the first one (which results in deployment to a dev server after a build which is initiated when SCM changes are found during polling).
One thing that might be nice is a way to schedule a promotion once criteria are met. With some effort, this is probably possible with some custom code and/or more jobs but having a more direct way would more convenient. My intent with this would be to use promotion to perform deployments, outside of normal use hours, to systems used for testing/training so as to not disrupt activities. I guess another option is to change the deployment processes so that promotion simply queues up the artifacts that a separate deployment process then handles. I'll have to think that one through further; for now the recent changes are at least a positive step forward.
Another item of research is whether the promotion process definitions can be simplified/shared somehow. I didn't put time into simplifying it upfront, instead I just wanted to make sure it was correct. As long as the maintenance cost is lower than the benefits I won't complain but reducing non-development time wasters is always a plus so I will hope for continued improvement.
Thursday, June 2, 2016
Goals in software development
This is from a document I scratched down (in my mildly legible handwriting) about 5 years ago but I find that it is still worth reflecting on at times. The writing is starting to fade a bit so I decided it was time to add it to the blog. I made a few updates to mention newer ideas/technology, etc. This isn't really a complete how-to or anything - just a snapshot of what I was thinking about over a couple days a few years back. There is probably nothing surprising here even - it is to a large degree just the distillation of a number of best/good practices that I have experienced first hand and/or found documented by others. I'll probably fill in some details over time.
Just a brief description of my software development goals - these are "abilities" to strive for. This is beyond the "must meet functional requirements".
Hope someone else may find something useful here.
Scott
Just a brief description of my software development goals - these are "abilities" to strive for. This is beyond the "must meet functional requirements".
- Reliability
- Test-ability
- Maintainability
- Manageability
- Monitor-ability
- Secure-ability
- Development
- Use source control. It amazed me that my employer had no source control when I started. Without source control it is tedious and error prone to manage anything but minimal changes with a single developer and it only gets worse with more developers. There is minimal cost to use source control - free products exist so the main cost is in learning to use the tools and maybe some maintenance/upgrade aspects depending on the tool. With the use of SCM tools you can track the changes going into a product - which I believe is a factor in software reliability.
- Unit tests / regression tests.
- Use something like JUnit or a few alternatives. Use a mocking framework like Mockito to stub out your code to create reasonable sized test cases.
- Depending on some factors; having developers run a basic set of unit tests as part of the source control pre-checkin process might be worthwhile. I have wondered if some sort of Eclipse / Subversion integration could be created for this. At that moment, it is something I do manually when it seems warranted. Catching silly issues before getting into source control does tend to reduce some slowdowns I experienced otherwise.
- Automate unit/regression testing. Use something like Jenkins to regularly perform builds. For a very small team this might be a manual process but for larger teams it should probably be done based upon source control changes occurring.
- Use and/or write reusable libraries. I find a need to use utility type functionality in multiple applications so why not write it once, test it well and use it again. This does have a cost though - extra testing, documentation, etc. If a utility needs a small tweak to support something new then extra testing / analysis / work is required to prevent unintended breakage of existing client code. There is some risk in using common 3rd party libraries - security issues cause a large consumption of Ibuprofen. How big the issue is can depend a lot on your organizations ability to turn-around new releases quickly with updated libraries.
- Write some test plans and do some functional testing. If you have the resources then use some functional test automation tools as well.
- Architecture
- support redundancy and failover
- software or hardware load balancer
- Any caching mechanism should not be a single point of failure
- In general, reduce single point of failure situations
- Use Inversion of Control (IOC). This promotes "configurability" and simplifies setting up tests. I use Spring for this.
- Create a testable architecture. There are a few books which talk about that in some detail.
- NOTE TO SELF: Add references.
- Use a consistent architecture
- Don't repeat yourself (the DRY principle)
- Documentation
- code
- process/procedure
- Task automation
- Deployment tasks
- web/app server up/down
- log rotating
- archive files if desired (i.e. WAR, etc) for fast recovery if needed
- Update filesystem permissions (to/from read-write)
- Consistent environments
- Don't manually update environment setups - automate it
- Various tools (Chef, Puppet, CFEngine) should work or you can script things
- Implement hooks to expose metrics. I would do this via JMX now.
- JVisualVM is part of the Sun/Oracle JDK and works pretty well at monitoring individual servers.
- Reduce the number of places to review for system status.
- Consolidate logs from multiple servers into one location.
- Integrate metrics into any monitoring tool you use (maybe Nagios, etc).
- Implement a dashboard of some sort
- Implement self-checks.
- application data and/or configuration consistency
- DB/App server privilege checks
- Static resource validations
- Log parsing tools would be useful. Automate the trolling of logs.
- Helps answer "when do you know you had/have a problem?"
- This is a more recent addition. The idea being to prevent tampering whenever/wherever possible and promote the ability to determine if something was tampered with or accessed inappropriately.
- Other "abilities" tend to support this but it is worth keeping as a separate item due to importance in this day and age.
- I'd like to add more detail here but not sure the risk is worth it.
Hope someone else may find something useful here.
Scott
Titus 2:7English Standard Version (ESV)
7 Show yourself in all respects to be a model of good works, and in your teaching show integrity, dignity,Monday, April 4, 2016
The Deck - Saga Complete
This was the project I thought would never end. Ongoing since Thanksgiving and filled with plenty of rain, snow, mud and multitudes of other distractions. The construction aspects are now complete although I do have a few details to cleanup - mainly fix a gap or two and change a few screws to slightly longer ones for a bit more long term safety. Once the cleanup is done, we'll give it a coat of stain if we get the chance before selling the house. Otherwise, the new owner will have the opportunity to pick their favorite color stain.
In the end, I am glad I did it myself (with some help from my dad and a good amount of help from my wife and kids) even though I ended tweaking a knee resulting in a minor surgery on it. I am pretty happy with the result and I think I was still able to do it in a way that added value without breaking the bank.
The last major piece was the steps and guard rails.
This wasn't easy by any means. While waiting for the weather to clear up so I could do the concrete work for the landing, I started drawing up the stringers, rail, steps and such. I got a bit ahead of myself though and decided to start with a paper stringer template with the plan to create a template out of thin plywood (luan) which is reasonably cheap and seemed like a good idea. I definitely recommend completing all the concrete work before creating any stringer template of any sort - no matter how hard you plan - there will surely be some difference in height between what you plan for and what actually is produced.
I think the template idea was ok but the execution could have been improved. I would recommend using contact cement if you want to use a paper template (onto a plywood template) to start with. This did give me a rough idea of what it was going to look like when done which was a nice validation before cutting any wood. If doing it again though, I think I would skip a paper template but still use a plywood version. The next problem was just accurately cutting out the plywood template - first make sure that all your lines are straight/parallel/square.
Cutting extremely accurately with a circular saw is difficult if you don't have a lot of experience or good equipment. I could have done this with my jigsaw but I don't think it would have resulted in as flat/smooth of cuts as desired. I was able to use my sliding compound miter saw to do a little touch up on a couple spots but if those spots had been anywhere other than where they were at then they would not have been accessible. Since I ended up doing some concrete after the template, I had to adjust the template further to come up with the final layout. This tweaking involved gluing a few small spacers to the template tread areas to fix an issue with the total height which was off enough to warrant fixing. Eventually I had the template in a usable shape and it was time to start shaping the actual stringers.
I had recently seen a technique on This Old House where they used a router and a template piece to make sure that all their stringers matched. I decided to do that so I picked up a reasonably priced 1.5" x .5" router bit with bearings at the tip. I learned a few lessons from this - make sure you cut the rough pieces pretty close to start with - like 1/8-1/4" so that you don't require as much routing. When I researched the bit, I noted some complaints about the nut coming off the bearings allowing it to come apart. I tried playing it smart and put some Loctite Blue 242 thread locker (all I had laying around) on the nut to ward off that problem. It did work - for a while. On the last stringer on the last section (the bottom of the bottom step) the nut came off while I rounded the end to the bottom and couldn't see what was going on. It felt like it was acting odd and I immediately stopped and found it was chewing up the bottom. Fortunately, I knew my concrete wasn't totally level so I was able to shave the bottom flat and use it on the high section of concrete. I took some time to relax a second and hunt for the missing bearings and nuts. I finally found them and it looks like one bearing overheated and I suspect that caused the Loctite to overheat and fail which allowed the nut to come off. The overheated bearing was burned up and useless - you can see that here if you look close. Not sure whether it could be classified as a design defect or whatnot. Anyways, at least I didn't need the bit for further work here. I'll probably order some spare bearing kits just in case for any future projects.
When I was done routing/cleaning up with a rasp - the stringers were all looking pretty good. I used some Simpson components to tie the stringers to the deck - you bend them to your particular stringers which was easy to do even by hand. I used SD screws instead of nails and followed the instructions. I was able to level the stringers pretty well. What I didn't check at that time was depth and I found later that bow in my rim board was causing bow across my 40" length away from the deck which left me a ~1/4 inch "high" spot in the center. I decided to roll with it and center the tread boards with even gaps at the back edge corners. The boards will still shrink some yet so it shouldn't be noticeable. Putting the treads and riser boards on was straight forward overall.
I did wait to tie the bottom posts into the stringers until I had the treads mostly in place. The concrete anchors I used have holes at the post for either nails/SD screws or bolts. I used SD screws for now but want to replace (or simply supplement) them with the optional 2 bolts per post. I'm not sure it will increase the stiffness any (probably not) but at least there won't be any screws pulling out over time.
The last part of the steps was the railing/balusters. This was the most time consuming part of the steps. Getting everything plumb was a challenge (let alone keeping it that way while putting pieces in place). Cutting the rails to the correct angle took creativity since my table saw and miter saw didn't support the angles I needed very well. My biggest complaint is the baluster connectors - they are a "dual" use pieces where you can leave it as use and use for flat mounting (like at the deck top) or spin the bottom of the piece which produces an angle so you can screw it into the stair rail to support plumb balusters. They were pretty painful to mount straight and get everything plumb. If I were to do another deck, I would spend the extra money and get face mount rails which I like as well (if not more) but do appear to cost a touch more. This part was definitely a 2 person job - love my wife and her patience with this part and I couldn't have done it without her.
I learned a lot building this deck and hope I can use that to benefit someone (kids, future grand kids maybe, neighbors, etc) someday down the road.
Hope you enjoyed my saga and that Jesus blesses any projects you attempt.
Proverbs 24:3
Through wisdom a house is built,
And by understanding it is established;
In the end, I am glad I did it myself (with some help from my dad and a good amount of help from my wife and kids) even though I ended tweaking a knee resulting in a minor surgery on it. I am pretty happy with the result and I think I was still able to do it in a way that added value without breaking the bank.
The last major piece was the steps and guard rails.
This wasn't easy by any means. While waiting for the weather to clear up so I could do the concrete work for the landing, I started drawing up the stringers, rail, steps and such. I got a bit ahead of myself though and decided to start with a paper stringer template with the plan to create a template out of thin plywood (luan) which is reasonably cheap and seemed like a good idea. I definitely recommend completing all the concrete work before creating any stringer template of any sort - no matter how hard you plan - there will surely be some difference in height between what you plan for and what actually is produced.
I think the template idea was ok but the execution could have been improved. I would recommend using contact cement if you want to use a paper template (onto a plywood template) to start with. This did give me a rough idea of what it was going to look like when done which was a nice validation before cutting any wood. If doing it again though, I think I would skip a paper template but still use a plywood version. The next problem was just accurately cutting out the plywood template - first make sure that all your lines are straight/parallel/square.
Cutting extremely accurately with a circular saw is difficult if you don't have a lot of experience or good equipment. I could have done this with my jigsaw but I don't think it would have resulted in as flat/smooth of cuts as desired. I was able to use my sliding compound miter saw to do a little touch up on a couple spots but if those spots had been anywhere other than where they were at then they would not have been accessible. Since I ended up doing some concrete after the template, I had to adjust the template further to come up with the final layout. This tweaking involved gluing a few small spacers to the template tread areas to fix an issue with the total height which was off enough to warrant fixing. Eventually I had the template in a usable shape and it was time to start shaping the actual stringers.
I had recently seen a technique on This Old House where they used a router and a template piece to make sure that all their stringers matched. I decided to do that so I picked up a reasonably priced 1.5" x .5" router bit with bearings at the tip. I learned a few lessons from this - make sure you cut the rough pieces pretty close to start with - like 1/8-1/4" so that you don't require as much routing. When I researched the bit, I noted some complaints about the nut coming off the bearings allowing it to come apart. I tried playing it smart and put some Loctite Blue 242 thread locker (all I had laying around) on the nut to ward off that problem. It did work - for a while. On the last stringer on the last section (the bottom of the bottom step) the nut came off while I rounded the end to the bottom and couldn't see what was going on. It felt like it was acting odd and I immediately stopped and found it was chewing up the bottom. Fortunately, I knew my concrete wasn't totally level so I was able to shave the bottom flat and use it on the high section of concrete. I took some time to relax a second and hunt for the missing bearings and nuts. I finally found them and it looks like one bearing overheated and I suspect that caused the Loctite to overheat and fail which allowed the nut to come off. The overheated bearing was burned up and useless - you can see that here if you look close. Not sure whether it could be classified as a design defect or whatnot. Anyways, at least I didn't need the bit for further work here. I'll probably order some spare bearing kits just in case for any future projects.
When I was done routing/cleaning up with a rasp - the stringers were all looking pretty good. I used some Simpson components to tie the stringers to the deck - you bend them to your particular stringers which was easy to do even by hand. I used SD screws instead of nails and followed the instructions. I was able to level the stringers pretty well. What I didn't check at that time was depth and I found later that bow in my rim board was causing bow across my 40" length away from the deck which left me a ~1/4 inch "high" spot in the center. I decided to roll with it and center the tread boards with even gaps at the back edge corners. The boards will still shrink some yet so it shouldn't be noticeable. Putting the treads and riser boards on was straight forward overall.
I did wait to tie the bottom posts into the stringers until I had the treads mostly in place. The concrete anchors I used have holes at the post for either nails/SD screws or bolts. I used SD screws for now but want to replace (or simply supplement) them with the optional 2 bolts per post. I'm not sure it will increase the stiffness any (probably not) but at least there won't be any screws pulling out over time.
The last part of the steps was the railing/balusters. This was the most time consuming part of the steps. Getting everything plumb was a challenge (let alone keeping it that way while putting pieces in place). Cutting the rails to the correct angle took creativity since my table saw and miter saw didn't support the angles I needed very well. My biggest complaint is the baluster connectors - they are a "dual" use pieces where you can leave it as use and use for flat mounting (like at the deck top) or spin the bottom of the piece which produces an angle so you can screw it into the stair rail to support plumb balusters. They were pretty painful to mount straight and get everything plumb. If I were to do another deck, I would spend the extra money and get face mount rails which I like as well (if not more) but do appear to cost a touch more. This part was definitely a 2 person job - love my wife and her patience with this part and I couldn't have done it without her.
I learned a lot building this deck and hope I can use that to benefit someone (kids, future grand kids maybe, neighbors, etc) someday down the road.
Hope you enjoyed my saga and that Jesus blesses any projects you attempt.
Proverbs 24:3
Through wisdom a house is built,
And by understanding it is established;
Saturday, March 26, 2016
Brief comments on the book "Clojure for the Brave and True"
This is a book by Daniel Higginbotham and published by "No Starch Press" with a copyright date of 2015.
This was mostly an impulse purchase. I have wanted to read up on Clojure for some time and just hadn't picked up any books on it. I saw this at the book store recently and without really checking it over decided to give it a try. Based on the cover and title it seemed like the author might be entertaining as well.
I'm not quite done reading the book but I don't think my general comments will change regarding it. You can learn things about Clojure from the book. I'll probably catch flak from someone on this but I have not *enjoyed* reading the book. If I had actually browsed it decently at the store I probably would not have purchased it.
The writing is generally ok and the editing was pretty good overall. The author was trying to create something that wasn't a dry and boring book. There were a number of detractors in the book from my perspective though.
Wishing you a blessed day!
Scott
This was mostly an impulse purchase. I have wanted to read up on Clojure for some time and just hadn't picked up any books on it. I saw this at the book store recently and without really checking it over decided to give it a try. Based on the cover and title it seemed like the author might be entertaining as well.
I'm not quite done reading the book but I don't think my general comments will change regarding it. You can learn things about Clojure from the book. I'll probably catch flak from someone on this but I have not *enjoyed* reading the book. If I had actually browsed it decently at the store I probably would not have purchased it.
The writing is generally ok and the editing was pretty good overall. The author was trying to create something that wasn't a dry and boring book. There were a number of detractors in the book from my perspective though.
- Comments that referenced God in a common but irreverent manner which I didn't appreciate and provided no value.
- Examples involving vampires, zombies, etc. The attempts to be "fun" didn't work for me; the example content was a distraction from the technical idea being presented and provided no value.
- I found the authors style awkward at times and hard to follow. I'm not sure if having some recent but even minimal pre-existing Clojure/Lisp exposure would have helped. I'm still debating what I think the underlying issue is.
Wishing you a blessed day!
Scott
Brief comments on the book "Seven Concurrency Models in Seven Weeks - When Threads Unravel"
This is a book by Paul Butcher and published by "The Pragmatic Programmers" with a copyright of 2014.
I give this book a great big "Good Job"!
This was 1 of 2 books which were recent impulse purchases. I mostly work with web applications and integrations but generally don't have many explicit concurrency and/or parallelism needs not handled by standard frameworks. I enjoy keeping up with technical topics though so this seemed like an appropriate topic.
I really enjoyed this book. It is both well written and edited. If you don't work with concurrency and/or parallel systems regularly then you will probably learn some new things. Even if you do work with them - you may find something new and interesting since the book covers a decent breadth of technology.
On the publishers website, there is a bonus chapter "Actors in Scala" which I just finished reading (just google for the main book title and Scala). I found this somewhat more practical than the chapter 5 that made it to press which covers Actors using a new language named Elixir.
Overall, I learned/relearned a few things regarding the tools available in the java.util.concurrent package. I also learned a lot of interesting concurrency stuff about Clojure, OpenCL, Exlir, Scala, Actors and other topics. I'm hoping to find/make a little time to toy with some of the ideas and technology discussed in the book now. Maybe I can implement concurrent versions of some programs I wrote as learning examples for my kids. This book does inspire me to go and learn more on many of the topics.
Hope you found this useful.
Have a blessed day!
Scott
[2016/05/28]Was trying to give OpenCL a tryout on my (pretty old) Toshiba Satellite but am having driver problems. My initial plan was to try it out with the embedded Intel HD graphics but when that turned out problematic. My fallback plan was to try and use just CPU support but I received some errors with drivers for that as well. I'm trying hard not to turn my laptop in a brick right now so I may have to borrow my wife's laptop for a minute or maybe the kids desktop computers would work OK for a quick test if the driver install goes OK. We are talking about getting a nicer small server class system for trying out some things (including stuff like this in my case) - that might be the best plan.
I give this book a great big "Good Job"!
This was 1 of 2 books which were recent impulse purchases. I mostly work with web applications and integrations but generally don't have many explicit concurrency and/or parallelism needs not handled by standard frameworks. I enjoy keeping up with technical topics though so this seemed like an appropriate topic.
I really enjoyed this book. It is both well written and edited. If you don't work with concurrency and/or parallel systems regularly then you will probably learn some new things. Even if you do work with them - you may find something new and interesting since the book covers a decent breadth of technology.
On the publishers website, there is a bonus chapter "Actors in Scala" which I just finished reading (just google for the main book title and Scala). I found this somewhat more practical than the chapter 5 that made it to press which covers Actors using a new language named Elixir.
Overall, I learned/relearned a few things regarding the tools available in the java.util.concurrent package. I also learned a lot of interesting concurrency stuff about Clojure, OpenCL, Exlir, Scala, Actors and other topics. I'm hoping to find/make a little time to toy with some of the ideas and technology discussed in the book now. Maybe I can implement concurrent versions of some programs I wrote as learning examples for my kids. This book does inspire me to go and learn more on many of the topics.
Hope you found this useful.
Have a blessed day!
Scott
[2016/05/28]Was trying to give OpenCL a tryout on my (pretty old) Toshiba Satellite but am having driver problems. My initial plan was to try it out with the embedded Intel HD graphics but when that turned out problematic. My fallback plan was to try and use just CPU support but I received some errors with drivers for that as well. I'm trying hard not to turn my laptop in a brick right now so I may have to borrow my wife's laptop for a minute or maybe the kids desktop computers would work OK for a quick test if the driver install goes OK. We are talking about getting a nicer small server class system for trying out some things (including stuff like this in my case) - that might be the best plan.
Saturday, March 5, 2016
Teaching programming related skills to my kids
As mentioned in a different post, I'm not a teacher but I do enjoy teaching my kids things. Often this is computer related stuff. Since my son is learning Java at school, I will use that as the initial
basis for some teaching opportunities. He still hasn't learned a number
of key items yet but he will hopefully be ready for this by the end of
the year. My idea for teaching is not the standard read a book and write some tiny bit of code to learn basic syntax/idea. Instead, I am going to write some relatively small (probably < 2000 lines of code) programs which are highly commented. The comments will consist of application specific comments but more importantly will include "talk points" about why I did something or how I could do it different/better. We can then walk through the program itself together and discuss how/why it works.
Items which we may be able to weave into the conversations include:
Even it it doesn't pan out to my fullest desire, I hope that one or both of my kids might learn something useful and enjoy some "geek time" with me.
The initial program I thought of is a Sudoku puzzle solver. A number of us in the family like to work the puzzles at times (some of us more than others).
Here is a link to my initial stab at the well commented Sudoku solver program.
https://drive.google.com/file/d/0B0GbWl6CZQ6lQlZ4S0NHNWpVWVk/view?usp=sharing
This link is to a zip file on my Google Drive containing a Eclipse 4.5.1 project. You can extract it and import it into an Eclipse workspace. There is a README with some hopefully helpful setup info if needed.
[2016/3/15] Below is a stack based solution with some changes for clarity (in many cases compared to the prior recursive version) and has heavy use of JDK 8 functionality including use of "default" in interface definitions and more stream/lambda examples. I'm sure some of my lambda related code could still be cleaned up - probably with use of method references in some places.
https://drive.google.com/file/d/0B0GbWl6CZQ6lZzh4TVl4a3dUOUU/view?usp=sharing
For this particular program, I think some of the conversations might include:
**
[2016/05/29] As a side note, simply replacing regular streams with parallel streams had a substantial negative impact on the performance. This was on on a 4 core i5 based system running at 1.70 GHz with Windows 7 x64. Maybe an improvement could be made with some effort but it will take a bit more work than just adding "parallel" in a few places.
**
I'm starting to think about what type of programs might be fun to work on next. Maybe a web application could be interesting but I think the focus would be more on the supporting technology (i.e. container and frameworks). Maybe we will make that decision together.
[2016/04/03] Somethings to note, code reviews are a good thing - would have caught a number of my own documentation mistakes in this code which I need to fix. A code review involves one or more other developers who read the code while looking for errors in logic, code documentation or deviations from some coding standards. Finding the logic/documentation errors is the best code review usage and has a better chance of working if the developers have some artifact the the logic was created from which can be referenced - probably a design document, use case or diagram of some sort. Deviation from coding standards is better identified with other software which can be integrated into appropriate places in the chain of software development events. One of those events might be checking the files/changes into a source control system - something that is important but I am not discussing here. Creating unit tests are another possible way to catch logic errors if the tests are created based upon the desired true outcome (requirement) versus the actual code/logic which was implemented. Do some research into Test Driven Development (TDD) for more info in this area. From a pragmatic standpoint, taking a break from a long coding session and coming back to it after a couple hours to carefully review it again can go a long way to catching your own mistakes (of all types) before others find them.
Deuteronomy 32:2New International Version (NIV)
Let my teaching fall like rain
and my words descend like dew,
like showers on new grass,
like abundant rain on tender plants.
Thanks for reading!
Scott
Items which we may be able to weave into the conversations include:
- Analyzing options; trade-offs between viable solutions to problems and parts of problems.
- Architecture/design/implementation choices.
- Evaluation criteria for various choices
- readability / maintainability
- ease of expressing a solution
- performance
- cost
Even it it doesn't pan out to my fullest desire, I hope that one or both of my kids might learn something useful and enjoy some "geek time" with me.
The initial program I thought of is a Sudoku puzzle solver. A number of us in the family like to work the puzzles at times (some of us more than others).
Here is a link to my initial stab at the well commented Sudoku solver program.
https://drive.google.com/file/d/0B0GbWl6CZQ6lQlZ4S0NHNWpVWVk/view?usp=sharing
This link is to a zip file on my Google Drive containing a Eclipse 4.5.1 project. You can extract it and import it into an Eclipse workspace. There is a README with some hopefully helpful setup info if needed.
[2016/3/15] Below is a stack based solution with some changes for clarity (in many cases compared to the prior recursive version) and has heavy use of JDK 8 functionality including use of "default" in interface definitions and more stream/lambda examples. I'm sure some of my lambda related code could still be cleaned up - probably with use of method references in some places.
https://drive.google.com/file/d/0B0GbWl6CZQ6lZzh4TVl4a3dUOUU/view?usp=sharing
For this particular program, I think some of the conversations might include:
- mutable versus immutable data
- data structure selection
- object orientation design
- serial versus concurrent/parallel processing
- Java 8 "functional programming" features
- solution strategies
- brute force
- backtracking
- recursion versus stack based implementation
**
[2016/05/29] As a side note, simply replacing regular streams with parallel streams had a substantial negative impact on the performance. This was on on a 4 core i5 based system running at 1.70 GHz with Windows 7 x64. Maybe an improvement could be made with some effort but it will take a bit more work than just adding "parallel" in a few places.
**
I'm starting to think about what type of programs might be fun to work on next. Maybe a web application could be interesting but I think the focus would be more on the supporting technology (i.e. container and frameworks). Maybe we will make that decision together.
[2016/04/03] Somethings to note, code reviews are a good thing - would have caught a number of my own documentation mistakes in this code which I need to fix. A code review involves one or more other developers who read the code while looking for errors in logic, code documentation or deviations from some coding standards. Finding the logic/documentation errors is the best code review usage and has a better chance of working if the developers have some artifact the the logic was created from which can be referenced - probably a design document, use case or diagram of some sort. Deviation from coding standards is better identified with other software which can be integrated into appropriate places in the chain of software development events. One of those events might be checking the files/changes into a source control system - something that is important but I am not discussing here. Creating unit tests are another possible way to catch logic errors if the tests are created based upon the desired true outcome (requirement) versus the actual code/logic which was implemented. Do some research into Test Driven Development (TDD) for more info in this area. From a pragmatic standpoint, taking a break from a long coding session and coming back to it after a couple hours to carefully review it again can go a long way to catching your own mistakes (of all types) before others find them.
Deuteronomy 32:2New International Version (NIV)
Let my teaching fall like rain
and my words descend like dew,
like showers on new grass,
like abundant rain on tender plants.
Thanks for reading!
Scott
Monday, February 1, 2016
Gerbil "Escape from Alcatraz"
We are theorizing two things about the gerbils.
Since this was not really how I wanted to spend my evenings, I decided to make a better "guard" for the top of the pen. I had some thin luan plywood (5/32" ?) and some chunks of 1x2 lumber laying around the garage along with a box of 1 5/8" drywall screws. That along with my table saw, miter saw, drill press and cordless drill and piece of sand paper and I had all I needed to better secure our talented and very gymnastic gerbils.
The basic idea was to:
And this is what the whole thing looks like afterwards. The only real change I might make is rounding the corners of the panels. I'll try and make time for that soon.
The gerbils tried it out tonight and so far were not able to effectively use their existing tricks. I think it will make them try harder. I'll start planning for the next tactic to keep them contained and safe.
Below is a video of what we were trying to prevent.
Enjoy!
[2016/02/02] aka, the day after. Ok, so even though the overhang is pretty big - more than 3.5 inches, I found "Thumper" wandering around on top of the new wood panels when I went to check email. I thought I had them. Joke is on me. Now I need to find "the next level". I'm going to have to setup a webcam or something to figure out how they are doing this now.
- They think they are people and should not be penned in.
- They watched "Escape from Alcatraz" late night a few times and were inspired.
Since this was not really how I wanted to spend my evenings, I decided to make a better "guard" for the top of the pen. I had some thin luan plywood (5/32" ?) and some chunks of 1x2 lumber laying around the garage along with a box of 1 5/8" drywall screws. That along with my table saw, miter saw, drill press and cordless drill and piece of sand paper and I had all I needed to better secure our talented and very gymnastic gerbils.
The basic idea was to:
- Cut the luan into strips roughly 4.5" x 60" on the table saw
- cut each luan strip into about 13" lengths (based it on the panels in the pen and made nearly the same length).
- sand the edges of the luan a bit since it tends to splinter a lot
- Cut the 1x2 lumber into 2" length blocks.
- Pre-drill the 2" blocks through the small edge since they are prone to splitting with the drywall screws. I drilled 2 holes in each but only really needed 1 on the second inner piece.
- Locate the first block on the edge of a luan rectangle and drill through original hole and the luan. That allowed locating where to screw from the top. Repeat that basic process for both blocks and the remaining screws. I left about 1/8" gap between them for the fence. And just to note, I probably could have done things differently/faster (pre-drill and locate hole from top of luan in one step but I didn't think about it until I had already done most of the blocks).
Here is my daughter placing a panel back on the fench.
And this is what the whole thing looks like afterwards. The only real change I might make is rounding the corners of the panels. I'll try and make time for that soon.
The gerbils tried it out tonight and so far were not able to effectively use their existing tricks. I think it will make them try harder. I'll start planning for the next tactic to keep them contained and safe.
Below is a video of what we were trying to prevent.
Enjoy!
[2016/02/02] aka, the day after. Ok, so even though the overhang is pretty big - more than 3.5 inches, I found "Thumper" wandering around on top of the new wood panels when I went to check email. I thought I had them. Joke is on me. Now I need to find "the next level". I'm going to have to setup a webcam or something to figure out how they are doing this now.
Thursday, January 21, 2016
FIM management agent w/extension - Disabling AD user accounts
Finally got around to implementing a new FIM management agent (MA) with a custom extension that disables active directory (AD) user accounts.
This has been sitting on my whiteboard list of todo items for some time. It didn't turn out too difficult but I had to make some changes to another MA which was conflicting with an attribute flow from what I can tell. That along with some new custom code and MA did the trick.
There was some original (written by a MS consultant) code/setup for disabling users that exist in the FIM management agent (for the portal). The basic idea that was partially implemented - a custom field in the FIM MA and portal which drives updating the Windows user account control flags (reference) through the Active Directory MA & extension.
The custom field in the portal is updatable. A change to the field ends up in the FIM connector space and propagates to the metaverse (MV). The MV value flows to the Active Directory (AD) MA which has a custom extension which translates the flag to the appropriate user account control flag value and manages OU changes to the account. When the custom field indicates to disable a user then logical-or the user account control with 0x2. When the user is re-enabled then logical-and the user account control flag with a negated 0x2.
We only keep certain users in the FIM MA and portal for performance reasons so the original design wasn't 100% useful and was never fully implemented. It did provide the basic framework for my final solution though.
So what I ended creating is a database feed (new table/views) going to the new MA which has a C# extension. The database is populated from a utility I created which the local security team has access to. The new DB feed replaces the custom field in the FIM MA but still updates the same metaverse (MV) data which feeds into the AD MA. So the largest change was removing the existing FIM MA support and replacing it with the new MA. The remaining changes were more cleanup in nature with some changes needed to simply get things working which had not been fully implemented initially.
At some point, a more general tool will be created to populate the DB table feed and decentralized security teams will have access to it.
This has been sitting on my whiteboard list of todo items for some time. It didn't turn out too difficult but I had to make some changes to another MA which was conflicting with an attribute flow from what I can tell. That along with some new custom code and MA did the trick.
There was some original (written by a MS consultant) code/setup for disabling users that exist in the FIM management agent (for the portal). The basic idea that was partially implemented - a custom field in the FIM MA and portal which drives updating the Windows user account control flags (reference) through the Active Directory MA & extension.
The custom field in the portal is updatable. A change to the field ends up in the FIM connector space and propagates to the metaverse (MV). The MV value flows to the Active Directory (AD) MA which has a custom extension which translates the flag to the appropriate user account control flag value and manages OU changes to the account. When the custom field indicates to disable a user then logical-or the user account control with 0x2. When the user is re-enabled then logical-and the user account control flag with a negated 0x2.
We only keep certain users in the FIM MA and portal for performance reasons so the original design wasn't 100% useful and was never fully implemented. It did provide the basic framework for my final solution though.
So what I ended creating is a database feed (new table/views) going to the new MA which has a C# extension. The database is populated from a utility I created which the local security team has access to. The new DB feed replaces the custom field in the FIM MA but still updates the same metaverse (MV) data which feeds into the AD MA. So the largest change was removing the existing FIM MA support and replacing it with the new MA. The remaining changes were more cleanup in nature with some changes needed to simply get things working which had not been fully implemented initially.
At some point, a more general tool will be created to populate the DB table feed and decentralized security teams will have access to it.
Subscribe to:
Posts (Atom)