Illusory Follies Andrew Flanagan's Blog

8Sep/170

Long time

It's been over 29 months since my last post... A lot of major events have happened in my life. Through it all, one of my regrets is not continuing to write as I had been doing before. Although I was able to process through a lot of grief and loss by talking with many, many friends, it feels as if writing offers a unique way to process information.

I have come through this dark point in my life realizing now that what I thought was my future before would have been a sad, lonely, and unfulfilling existence. I am now able to see how these events were for my good and through them I am stronger, wiser, more capable, and prepared for the future that I do not know.

 

I'm 34 years old but in some ways, I feel like my life is just beginning.

13Feb/151

Dieting

Since just a few days after the New Year, I've been on a new diet. Thus far, it's been a success in the sort of way that I think all good diets should be:

  • I have been losing weight at a fairly consistent rate (about 2lbs per week on average)
  • My energy levels are the same or higher than before the diet started
  • I do not constantly crave or fantasize about food
  • I can feel and notice an increase in my stamina as I exercise

Some diets I've tried in the past have resulted in rapid weight loss (maybe 4-5lbs a week) but I was unable to stay on them consistently. It felt like like a type of torture and every day was horrible. I felt tired and weak, I constantly thought about food, and I just struggled every day. This was especially the case for the Atkin's diet. In one case (many years back), I was able to lose a substantial amount of weight over about 3 months, but the weight came back pretty quickly within a year.

So what is my diet? It doesn't exactly have a name. It incorporates elements of the Atkin's diet, some of the grain-free stuff, and intermittent fasting -- basically, whatever I've found works for me. Here are the basic rules:

  • Don't eat before 10am.
  • Don't eat after 2pm.
  • Minimize processed foods and sugars
  • Minimize wheat (and grains overall)
  • Mostly focus on protein -- no need to avoid fat from meat sources
  • Eat slowly and stop when I feel full
  • Eat meals, not snacks during this time (two small meals at say 10am and 1:45pm are fine, but avoid grazing)
  • Lots of water
  • Nothing with artificial sweeteners
  • Coffee, tea, other non-caloric drinks are fine outside of the "eating hours"

This is the basic set of rules. I do make a few adjustments to this core set of rules. The adjustments are really to cover social situations where diets make social interactions frustrating or awkward. Eating with family and friends is a wonderful and enjoyable social experience, and I don't think that a diet should force that part of our life to be radically altered.

  • No more than once a week, I can shift the times from 10am-2pm to 5pm-7pm provided I go to bed after 11pm.
  • I have diet break days (where really anything goes) once a month (on average). This allows me to participate in things like holiday celebrations and birthdays with the family.
  • Once a week, I allow myself a small amount of alcohol (whiskey, wine, cidar -- I try to stay away from beer) in the evening provided I go to bed after 11pm.

The social "adaptations" to this diet are not required, they're simply there to allow me to feel a little more human with other people. It's not as if I have to shift my schedule, or have a drink with friends, or even have a break day. In fact, I've found that on this diet, that I usually really restrain myself in these situations. It gives me the flexibility to not be the one guy who never has a glass of wine. But if I'm really not feeling like some, I can (and sometimes do) skip.

I've lost about 22lbs so far.

I previously had a number of issues related to diet:

  • Constant or increasing weight
  • Back pain almost every morning
  • Trouble sleeping at night (sometimes)
  • Lethargy in the afternoon/evenings
  • Symptoms like those of IBS

These are basically gone.

The one change in my habits is that I sometimes do take an afternoon nap. I sometimes do feel a little tired about an hour or two after eating my mid-day meal. Also, mentally, I feel that it's quite helpful to nap for 30 minutes to an hour each day.

This diet works for me. I am not saying that this diet will work for you. I believe that one of the main problems with diets in general is that human bodies are very different and it's difficult to find something that works particularly well for just YOU.

A quick note about the statement about grains. I'm not a "gluten-free" person, nor do I think all people ought or should avoid grains. However, from my own anecdotal evidence, it seems I do better without grains in general. Rice is the best for me -- I can handle that pretty well. Quinoa also seems OK. I mostly avoid corn, but I have it in small amounts sometimes. Wheat seems to cause the most trouble for me. But oddly, not in all forms. For example, tortillas seem fine in most cases. In general, it seems like the puffier the bread, the worse it is for me. Those sourdough loaves or the sandwich bread at Subway are the worst. It may be that I'm actually sensitive to a preservative or something related to yeast, but I'm not really sure.

I think it's a good idea to spend time learning about what works well for your body in particular -- not just reading books, but experimenting on yourself. What can you handle and what can't you handle? How do different types of foods make you feel? Reading books and doing research is good, but ultimately, it's about what works for you physically (so you can feel good) and what works mentally (so you can stay on your diet).

 

Tagged as: , 1 Comment
1Jan/140

How do we really enjoy?

Go, eat your bread with joy, and drink your wine with a merry heart, for God has already approved what you do.

Let your garments be always white. Let not oil be lacking on your head.

Enjoy life with the wife whom you love, all the days of your vain life that he has given you under the sun, because that is your portion in life and in your toil at which you toil under the sun. Whatever your hand finds to do, do it with your might,for there is no work or thought or knowledge or wisdom in Sheol, to which you are going.

-Ecclesiastes 9.7-10

What gain has the worker from his toil? I have seen the business that God has given to the children of man to be busy with. He has made everything beautiful in its time. Also, he has put eternity into man's heart, yet so that he cannot find out what God has done from the beginning to the end. I perceived that there is nothing better for them than to be joyful and to do good as long as they live; also that everyone should eat and drink and take pleasure in all his toil—this is God's gift to man.

-Ecclesiastes 3.9-13

 

Good Drink

I don't take this to be instructions to live a hedonistic life. Nor do I typically like extracting only PART of the massive wisdom  found in Ecclesiastes and trying to make a one-sided point out of it. The whole book definitely has context and these excerpts certainly need to be taken in context.

However, I do sometimes feel that I struggle in one of two ways:

1) Angry, bitter, and frustrated, I fight to "keep the course" and do what I know to be right -- I take no time to enjoy, I just keep plugging along. I want to work hard but it's all about what I need to do.

2) I give up and turn to escapism and for at least certain periods of time, I have a real apathy towards God

Both are inappropriate responses. The goodness of God is great. Work and the satisfaction that comes from good work, building relationships, and enjoying the fruit of hard work is not something that we should feel guilty about basking in and enjoying. This is God's gift to man and it's following in the pattern of God -- he delights in his creation. And yet, we are also not to be turning away from our work or what we know to be right and short-circuit to the enjoyment of things that we didn't work for.

It's not about what we deserve, it's having the ability to recognize the gifts that we have been given by a loving Father (good work, loving family, adoring wife, skills to share with others, etc.) and truly enjoy them.

Here's to hoping that in 2014 I can apply these things in my life.

4Jul/130

Polyphylla decemlineata

10 Lined June Beetle

Polyphylla decemlineata or the Ten-lined June beetle is an interesting little beetle. Patrick saw one of these at school (and later one at home in the backyard) and was intrigued. After digging around on the Internet and searching through quite a few varieties of beetles, we finally identified it. The one we saw did not appear to have such large antennae as some of these specimens (or perhaps they just weren't unfurled). Ours looked a bit more like the picture on the left.

These things can get kind of large for a beetle and apparently they make a hissing sound if disturbed (although we didn't try).

20Feb/130

I’m most creative when I’m not

 

My new keyboardMy typical work day is a mostly mental exercise. Most of my work falls into these categories:

  • Pushing or pulling ideas between various people ( normally we call these conversations but that's what it feels like)
  • Attempting to create abstractions of concrete examples
  • Attempting to make concrete examples of abstract ideas
  • Designing optimized interactions and processes for defined workflows
  • Implementing software applications that meet the design
  • Thinking of ways that the implementation can be broken or hacked
  • Outlining and documenting all of the above in a way that almost anyone can understand it

I'm a software engineer and that's what I do. It's almost entirely a mental exercise. There are very parts of the day where I just click through something or enter data over and over or do anything else where I can zone out. I think a lot of non-techies think that computers are all about following some steps in a process (e.g. "Push that button, then click here, then push the other button."). I'm sure to offend someone here, but I'll pick an example of a task that at first requires some mental exercise but then really doesn't: assembling furniture from Ikea. So, when you first get a box and pull out the pieces you have to apply some thought. Hopefully you skim through the directions, make sure you have the parts that you expect and then start on page 1. You look at the pieces, look at the drawing and start working. Two points to make on this: first, the thought is pretty basic. You've been given everything you need to work, you just have to follow the steps. Second, if you buy more than one item (or if your Ikea furniture wears out like ours does) you may find yourself assembling the second unit without even referencing the book. You essentially have to be smart enough to identity what object is in your hand and what parts in front of you fit where on that part.

Software Development Life Cycle

Software engineering is almost never like this. To be sure there are processes and steps and flow in software. There is a typical software requirements lifecycle that is composed of Planning, Design, Development, Testing, Deployment, and Maintenance [although sometimes the order and categories are described differently, but it's still basically the same thing] but this just a huge framework that outlines the overall process. In fact, in many software methodologies the lifecycle is intentionally NOT a straightforward process but rather an iterative one. You start with requirements, do some design, write some tests, write code, do more design, refine some requirements, write more code, etc. Most of the process is up to you. Gathering requirements for a software project can be aided by good tools and by good frameworks. However, it's still up to smart people to ask good questions and translate sometimes misleading responses and then continue to ask questions that flesh out the real desired functionality. Software design has a number of tools and frameworks as well. Just as in real-world architecture, there are numerous design patterns that can be leveraged to achieve a solid and good design but no one but a skilled engineer can make the call on what design pattern is appropriate. We have great modeling tools like UML which can help in developing a [mostly] unambiguous representation of a software component but someone has to construct the diagrams. The coding or implementation itself is probably the least "mental" part of the work. Granted, there's a large amount of material that a developer needs to understand how to implement a design in code but most of the material is available easily from reference books or more commonly, the Internet. Even so, a developer must spend time understanding the design and ensuring that the code does in fact implement it. It's difficult to ensure that your implementation is in the line with the requirements so testing is necessary. Testing is hard. I'm not even for a moment suggesting that it is too hard and should be ignored. In fact, you can't really separate testing from implementation since there's no way of knowing if what you wrote works without testing. But good, solid testing can be quite difficult. Modern tools are wonderful for testing -- it's easy to write unit tests for code to verify that code does what it's supposed to do. The tools make life easier but there's still an enormous amount of thought that has to go into testing. Edge cases and complex use case scenarios are common; it's often very hard to have good tests that adequately cover all the requirements rigorously. Often software is written that supports an infinite variability of input. In order to write adequate tests, a developer must have intimate knowledge of the requirements but also the language, frameworks, operating system and other parameters that are part of the software environment. The tests themselves are easy to implement. It's knowing what we should test that's hard. Without even going into deployment, maintenance, and other related tasks, it's easy to see that most of this process is a thinking process. In fact, really good software can be nearly complete before any software has been written.

My BrainMy point of all this is to indicate that software is a lot of brain power. And more than just brain power, it requires a lot of creativity. A lot of software has been written in the last 60 years. New software isn't just about reinventing existing software but making things work better than before. Perhaps this means finding a creative way to tweak more performance out of the same hardware, or maybe constructing a more efficient interface that humans can spend less time learning and more time using, or maybe finding a way to make disparate systems talk together smoothly and correctly. All of these are valuable but often we're not trying to find a solution but to find the best solution. Requirements have many non-functional elements that describe constraints on the system. We might be building a system that searches an airline reservation system for available seats but our constraint might be that we need to retrieve this data from the current system in less than 1 second. That part gets tricky.

This wears me out mentally. I find that by the end of the day I rarely want to spend time on the computer (unless it's doing something mindless). In fact, even on the weekends I greatly prefer activities that are manual. I enjoy do-it-yourself projects around the house that involve punching holes in walls and cutting down trees. That sort of thing is easy -- it takes some minimal thought and care but it's basically doing stuff not thinking about stuff. I rarely do work on evenings or weekends that's very creative -- I've struggled just to write on this blog let alone writing out some stories that I've had floating in my head for years. Any project around the house that requires a good amount of planning or preparation tends to not happen because my brain sees the looming creative task and tries to shut down.

So finally, one observation, and one idea.

In the last several weeks I've transitioned in my full-time work to doing very repetitive (even boring) work that's much more akin to pushing buttons and clicking the mouse. There's a large backlog of system configuration tasks that I've been working through. The work is easy in one sense. Almost all of it is well-defined and easily understood. It just takes time. Sometimes I have to chase down problems and troubleshoot things that aren't working, but it's mostly clicking, typing, waiting, and repeating. What I've observed is that after about 3 days of "time off" from the creative process of software engineering I had a large boost in creativity. During the day, in the evening, on the weekend -- I suddenly was interested in doing creative tasks. My brain had realized that it wasn't getting any action and started asking for attention. I spent a few late nights working on some tasks that I've wanted to do for a long time (including some software development for a personal project that's been on the back burner for literally years). All of it felt not only good, but great. I felt like I had time to think through things and although it's a little subjective, I think that the quality of my work was superior than it normally is. I've had more "ah ha" moments and more "outside the box" solutions than I normally do. It's been wonderful.

This probably isn't too much of a surprise to anyone who thinks about it. I'm sure there are studies and articles on the subject (I've seen some). However, I'm interested in the idea that there may be optimal ways of mixing work for professions that require large amounts of creativity. For example, it might make sense that the best activity for a group of software engineers isn't to have them spend an extra day each week on a project of their choosing (although I think it's better than nothing) but rather to have them spend time working on running cable in the corporate offices or doing rack wiring or adding components to computer cases. These are all worth-while activities and although they take some skill, most technically inclined people find these things to be fairly simple mentally (although not always physically). A company doesn't normally pay the same salary to people who do these tasks, but I think it could provide real value to the company in the long run. By turning off the creative process for a little bit, software engineers could [perhaps] be much more creative when they come back to their regular work. I'm not sure if there have been attempts to do things like this in a company that employees software engineers, but I'm curious to hear from my readers on whether they think that the idea has any merit. Anecdotal evidence as well as real studies on the subject are all welcome!

17Jun/111

Clever Sink

I kind of like the interesting combination of modern aesthetic and functionality exhibited by this sink that I saw at a WalMart restroom recently. A single piece makes installation easy,  the two levels make it easier for kids and adults to use, and the slope ensures that standing water drains off. Not the prettiest thing, but I was impressed by the effort that some design engineer put into it.

12Jun/111

Wonder

Took this a few weeks back on my way to work... The contrast was simply amazing -- remarkable brighter than this iPhone-snapped picture shows. I've never a seen a rainbow that just shimmered like this.

This is over by the Tacoma Narrows bridge on SR-16, headed North at about 6:40am.

O Lord, our Lord,

how majestic is your name in all the earth!

You have set your glory above the heavens.

Out of the mouth of babies and infants,

you have established strength because of your foes,

to still the enemy and the avenger.

When I look at your heavens, the work of your fingers,

the moon and the stars, which you have set in place,

what is man that you are mindful of him,

and the son of man that you care for him?

Yet you have made him a little lower than the heavenly beings

and crowned him with glory and honor.

You have given him dominion over the works of your hands;

you have put all things under his feet,

all sheep and oxen,

and also the beasts of the field,

the birds of the heavens, and the fish of the sea,

whatever passes along the paths of the seas.

O Lord, our Lord,

how majestic is your name in all the earth!


Psalm 8, ESV

31May/111

A Prayer at Work

I pray that I would be

effective in my work,

disciplined with my time,

loving to my coworkers,

forward-looking in my calling,

mindful of my family,

reflecting of Your grace,

throughout the day.

12Mar/112

Church Software, First Steps

Trying to do a little brainstorming here for the church software. I did just a little research and found that sure enough there are tons of products out there. The problem I'm seeing is that the interfaces seem a little less than useful and many of them are somewhat pricey. What I'd like is a "roll your own" option for any of these. Don't sell me the service or the product, sell me hosting and management if I can't do it myself.

Some new ideas based on what I found:

Facilities Management: would be nice to add. Isn't really fundamentally different than event planning and scheduling but could provide checklists, reminders, inventory (for consumable products), that sort of thing.

Childcare: Could easily integrate a check-in system for the nursery with all the data that we have.

Background, user meta-information: Useful for programs like Reducing the Risk. Basically, the ability to look at things like when a member has completed some necessary training or certification. Sad that this is needed, but it is.

Financials: After working on the budget committee this year and looking at other software, I believe that this is pretty straightforward. The big deal would be incorporating a tracker for two primary things:

1) Incoming checks and cash. Allow a weekly input where a user's check is recorded (possibly even scanned), the amount is recorded even before it's deposited with the bank. (With newer banks, it might be possible to simply upload check images). It would be very nice if users could check their own contributions online by logging in. Alternatively, any church administrator would have the information available without moving/copying Quickbooks files.

2) Outgoing checks and expense reimbursements. At least at our church we have a fairly small amount of accounts for expense tracking -- this would be easy to import and manage. Granted, this information wouldn't be available immediately in a full-fledged piece of software like Quickbooks, but what we need week-to-week and month-to-month would be adequate. Would provide immediate feedback to accountable parties for expenses that are being made rather than waiting for an end-of-month report.

3) Both of the above lead to budget tracking. With each account, if we have a weekly, monthly, or yearly budget, we can easily track actuals against budgeted amounts.

Anyway -- this is all well and good. It definitely, hugely increases the scope of work.

As a first step, I'm looking at trying to start with

1) Authentication system

2) User management

3) Scheduling system (rotating assignments with exceptions, email reminders, rescheduling/adjusting by admin only)

For our church, this is the most critical need. I'm going to be working on some models and some basic system requirements and we'll see how far I get. There's nothing there yet, but I've set up a new website here: http://steepleproject.org/ The plan will be to start formal documentation there, code repositories, etc.

If you have any thoughts or suggestions, please leave a comment!

1Mar/111

IT Dept. vs. IT Consultant

I moonlight from my full-time gig as a Software Engineer by doing IT support. This ranges from desktop support, hardware upgrades, purchasing assistance, remote access and support issues, network setup, configuration, and administration, etc. Basically, overall I'm acting as an IT Department for small companies.

I think I'm mostly productive in this role. Small offices don't have a lot of issues and to some extent users train themselves to accomplish routine IT-related tasks. The intersection of "IT Consultant" who typically charges a bit more per hour to be on call to resolve a wide range of issues and the role of "IT Guy" who is hired full-time to assist with any ongoing issues is interesting.

A consultant typically:

  • Is expensive on a per hour basis
  • Must perform constantly to avoid being replaced (which is usually trivial for his client to do
  • May not be available immediately since they have other clients, but can often be available FAIRLY quickly if your willing to pay even more
  • Is expected to resolve issues quickly and surgically

An IT employee:

  • Is cheap on a per hour basis
  • But is relatively difficult to fire and replace if performance becomes a problem
  • Is available immediately 5 days a week
  • Is expected to solve problems as they arise but with little motivation to finish them immediately

I believe that for small companies, the first option is almost always the best. One of the main reasons I believe is motivation. A consultant must perform constantly and consistently with every hour that they bill. They can be replaced easily in most circumstances, and therefore must "earn their keep". In addition, although there are definitely some conveniences of having local IT staff, most small companies do not have enough work to keep their staff busy. If they do, it's likely because processes are not streamlined. If a member of IT staff must do 4 hours of work every day just to keep systems running, they're probably wasting time. An expensive consultant might cost 5 times as much per hour but could be tasked to automate the process once and for all. In many cases, the IT staff member may not have the training or experience to perform automation (often consultants tend to have more rounded experience in process, software development, architecture, etc.) and normally they wouldn't have much motivation to automate a task that would make their own position no longer be needed.

For larger companies, the volume of IT work is likely sufficient to keep full-time staff busy even if they are constantly resolving old problems, and moving onto new problems. In a situation where a single contractor can no longer fill your IT needs, it's likely much cheaper to hire full-time IT staff.

There are scumbag employees and scumbag contractors. One of the biggest things that I have always striven for as a consulting contractor is to work myself out of a job. Ideally, I should be fixing things to a point that my client will only call when they want new features, new technology, new ideas. If all I do is treat a chronic IT wound, I'm part of the problem. Obviously, some systems take constant maintenance. But if I'm working on one system and I see a new system on the market that resolves or reduces these ongoing maintenance issues I will always point my client in that direction. My goal is to provide professional services that improve my client's bottom line -- not my own. Ideally, I'd love long-term relationships that are lucrative to me as well. But I want my customers to be successful with me as a partner, not in spite of me.

Ok, this is starting to sound like a sales pitch.

To summarize, in general, I advocate for IT consultants for small businesses and IT departments for medium to large sized companies (or perhaps specialized small businesses that have unusually high levels of IT needs). I think it's critical that your consultant is really, truly attempting to maximize your ROI, and that they're hired and rewarded in a manner that's consistent with this. The same applies for your employees -- your own IT staff must have support from management so that they can make their own positions more efficient and be rewarded for it. Contractors get greedy with high retainers, and employees get lazy with routine work. All organizations, large and small need to be aware of this and prepare for it in advance.