Categories
Engineering Philosophy

Digital Legos

Sometimes I get anxious, antsy. Spend too long in meetings or clearing out
emails.Sometimes I just want to code. It is akin to an addiction. Do it too
much and you overdose and your quality suffers. Do it too little and you go
into withdrawal, just begging to get that next hit.

Consider this metaphor. In Homeworld the various races travel
around space by means of hyperspace jumping. For all races except one this is
just another form of faster than light travel. For the outlier race, the
Bentusi, it is different. For them Hyperspace travel is an experience, a reason
to live. By their own account, “hyperspace sings in our
ears”
. So to is coding to the programmer. To live is to program. You cannot
separate the two.

What breeds this addiction? This affliction differs from person to person,
but for me it has always been to play. Code is just another toy for me, like
legos or Lincoln logs. It is about challenging yourself to make interesting
unique work with the pieces you have. I have a bunch of loops and conditional
statements and variables how can I make a list of unordered numbers become
ordered? How can I make it run fast? How can I make it use space efficiently?
You do not need any special education, all you need is the will to learn. You
can do that right now. Do not even leave this blog page. Go ahead and pop open
the web developer tools (Ctrl+Shift+K for Firefox, F12 for Chrome and IE. Press
Ctrl + 2 after opening up the development tools in IE to get the console). Play
with some javascript right now by typing at the prompt the following and
hitting enter:

alert("Hello World")

This creates a simple popup with “Hello World” displayed. Neat huh, not very
flash but you just did something. Try something else, type this and hit
enter:

confirm("See Some Buttons?")

This creates a similar popup but with an ‘Ok’ and ‘Cancel’ button. Are you
feeling it yet? Play with some math, go ahead and add some numbers at the
prompt:

3 + 3

It adds them for you and shows the result. You can multiply and divide and
all sorts of fun math stuff. Remember my example of turning unordered lists
into ordered lists. That is a solved problem for us. Look at this:

[1,5,2,3,6,7].sort()

What do you get? The numbers come back in sorted order. Try putting some
words in there and see what happens:

["bear", "cat", "chair", "apple"].sort()

Was that fun for you? It is not everyone’s jam, but I live for this. I live
for the thrill of trying to solve problems and build things with all these
digital parts. Its exploration, its discovery, its adventure. For some people
it is just a way to get around, but for others it can be a real journey.

Categories
Musings Story

I Miss Market Basket (Sometimes)

Couple years ago (six or so to be more exact) I was dirt broke. Never was
much of a spender. The less charitable might have used the term miser. Still
when you make zero dollars you can only ever go down. It was this point in time
where I realized I would need a job. I shot high with my first few attempts.
Gamestop seemed like a good fit. I had a friend who worked there, could always
use a discount on games, I am knowledgeable about the subject. I had an
interview (which is farther than some other people I knew got), but no call
back. I moved on. I know some other people who worked at the local CVS and BJs.
Got nothing back from my online CVS application so that was bust. Got an
interview at BJs, but I seem to recall saying I preferred to work alone. Many
people have called this a ‘poor move’ which seemed to be accurate as I never
got a return call. I tried some local independent bookstores, but go no bites
from them. It was this desperate state of affairs that forced me to consider
the grocery store business. I had thought about this before, but I was
admittedly unexcited about the idea. Here is a quick rundown of how I would
have rated part time jobs back then:

1. Paid to do nothing

2. Gamestop

3. Bookstore

….

567. Test subject for radiation experiments

568. Live fire missile target

569. Grocery store

560. A life of destitution and poverty

Granted it is not at the bottom of the list, but it comes in pretty close.
That said, bank account was trending toward zero and Anime Boston was coming
up. Man has got to make ends meet yo. Why Market Basket? Why not the closer
Shaws or Stop and Shop? No real particular reason, a person I knew who worked
there suggested it to me. The thing to know about Market Basket is they are mad
cheap. As in we do not run a website we are so cheap. As in we print half sized
job applications because the full size application would cost to much. That is
the kind of place they are. The kind of place I worked at for four years. The
kind of place I wore a tire, a button up white shirt, fancy pants, and dress
shoes. I remember cleaning up an oil spill once in my nice white shirt once.
Half the difficulty is in staying clean for a day. So why do I miss it? What
could there even be to miss? Long tedious hours, a pay slightly above the
minimum, constant interaction with people. This is the place I got yelled at
because a man wanted a few extra dollars off on a cooked chicken, a place where
one day I cut my hand to pieces picking up shattered glass, a place where I
spent all day sweating it out pushing carriages in that hot Bellingham summer.
My job now is luxurious, a quiet uninterrupted climate controlled environment
to play with digital legos. And to think they pay me to do it too. How could I
even think to compare what I have now with what I had before? Yet it is true,
my job now lacks what I had before: joyful communal torture.

I miss the struggle of trying to last through a day. The pure stress of not
being sure if you can stand one more hour, but pulling through anyways. It is
not just that however, I miss struggling together with everyone else like me.
Market Basket was stratified into two classes of employees: long term lifers
and short term teenagers. The split of about 200 employees was about 40% lifers
and 60% teenagers. That is not the split where I work now. It is more of an
even breakdown of ages. Back then it was thrilling to work with so many people
like me. All at near about the same place in life, similar hopes and dreams.
There is an inexpressible joy in struggling together with everyone. We were
challenged together and did it together everyday. It sounds incredibly sappy to
write that, but since leaving I have not found that feeling again. It is
probably for the better too, I can only endure so many stressful days. But you
cannot replace those frighteningly strong burst of comradery. It is what
motivated me to fill in other people’s shifts, what kept me sane, what kept me
still working.

I work for myself now, but back then I worked for others.

Categories
Cosplay

Two New Projects

Last convention of the year coming up soon so it is time to start
considering new projects for next year. I am looking to do two costumes this
year:

  1. Vostroyan Firstborn
  2. Anatoray Soldier

Vostroyan Firstborn

A Vostroyan Firstborn is a type of Imperial Guard unit that looks like
this:

I have already done two Cadian costumes and while it may be tempting to try
and shoot for perfection with the third one I am looking to try something a
little different.

Areas I am looking to improve in with this project:

  • Armor quality. The Kasrkin armor (latest project) was a step up from the
    Cadian Shock Trooper (first project), but there is still some room for
    improvement here. Specifically I am hoping to achieve a more rigid form for the
    armor plates. Either I will use the foam method I used the last two times, but
    this time with a fiberglass mat backing, or I will try some form of cast. Units
    of this type can have limited armoring (the example photo is probably the high
    end of the scale) so it will not be too prohibitive to iterate a couple
    versions.
  • Costume sewing. Seems odd I have ignored this problem set with my past
    projects. I was able to get away with it before as the actual cloth part of my
    past projects have been pretty basic (read: able to find good matches online).
    This unit type however has a far more intricate coat which I think will have to
    be custom done.
  • The overall costume has a lot more doodads than the Cadian ones which
    should be a good chance to work improving my poor detail skills
  • The Vostroyan Lasgun show here:


Is more intricate than the last gun I made. Prime chance to take what I learned
from the last lasgun construction and make a more detailed/complicated piece.
Probably will stick with the medium-density fibreboard I used last time or get
something with a bit more prominent wood grain. Also prime chance to practice
my paint skills.

Anatoray Soldier Last Exile was one of my first
animes and also one of my favorites (correlation?). It follows that I would
like to try and pay homage to it by making a costume of one of the faction’s
soldiers. Here is a good example of one:

Areas I am looking to improve in with this project:

  • Sewing. No way about it the jacket will have to be custom. Hopefully I will
    be able to find a pattern to work with before I go off script. The actual
    uniform looks pretty basic so it should be within my skill set as long as I
    have some guidance.
  • Custom hat. The hat is a bit different than the Cadian helmet as it is
    mostly cloth, but seems to be a logical progression to work on next.
  • The Anatoray rifle shown here (obscured, but gives a good sense of
    scale):

represents an interesting challenge. Construction should be
relatively straightforward as it has a simple mass produced look to it which is
in line with my past projects. The real issue is in transportation. The height
alone makes this difficult. The final product will have to come apart somehow
so that it is at least manageable to move around. Should be an interesting
challenge.

I am looking forward to many months of crushing disappointment pursing this
work. Stay tuned to watch me post the results of my crushed dreams.

Categories
Musings

One Year at Oracle

Today is a reasonably important day for me. It is my one year anniversary of
starting my first full time big boy job at Oracle. Although a year ago it was
called Tekelec, so things have changed somewhat since then. I would not call my
year spent at Oracle eventful, but I have gleamed some new insight that I would
like to share.

What Did I Learn This Year?

1. I am much calmer than I once was. The four years I spent in college were
stressful and not very enjoyable. There were certainly light moments at school,
but I found it increasingly difficult as I progressed to enjoy them. I never
was able to forgot my obligations. That sounds awfully stiff, but college was
an incredible investment in time and expense the ultimate success of which was
100% dependent on me. I feel as if I spent four years vacillating from total
despair to apathy. It was not pleasant. Now though, having spent the last year
working, I have found a deep tranquility. It is very calming to have an ordered
day. I know what times are for work and what times are not. I attribute this
clear distinction to the big gains in calm I have found. At school I never
could quite turn off. I always seemed to spend a lot of time needlessly
worrying. That is not a concern anymore.

2. I understand how people get old. This was a frightening realization.
Previously I understood the physical act of getting old, but the length of time
it took to get there seemed very long to me. After working a few weeks it is
easy to see how you can just put your head down, concentrate on work, and look
up a little while later and be 40. Not to say that 40 is ‘old’, but that time
can pass by more easily now that you have a set unending schedule. It is scary
to me that my job has no end point. It just keeps going until an outside force
acts upon it. Akin to starting into a void, just an endless expanse. It may be
enjoyable time spent, but the idea of action having no end is unsettling to
me.

3. I have less free time, but the time that I have I enjoy more. This
relates to point one. In school I never could turn off. I always worried about
the next assignment, exam, evaluation. There always was that nagging thought
that I should be studying more, revising more. When I punch out at the end of
the day that is it. Sometimes I find myself idly spinning work problems in my
mind, but I have no obligation to work beyond my set contract. To put another
way, work has established, for my benefit, clear boundaries in time between
work and non-work. As a consequence I have found my time outside of work to be
much less stressful even if I have less of it.

4. I love side projects. I love having little things to work on outside of
my job. It does not have to be technical (although I do enjoy those too), I
just like different problems to work on. For me this has taken the form of
costume work, prop building, etc. I spend a lot of my day working on abstract
technical problems, spending time working on a more physical problem domain is
a refreshing context switch. My skills in this regard are meager, but I feel
the cycle of busting something out and reviewing what I produced have resulted
in marked improvements in quality and speed.

5. I solve problems and I love doing it. This is a brag on my part, but I
have learned I work best solving tough problems. The solution is not always
pretty
, but it will work. There is nothing more satisfying than solving a
problem someone thought was impossible.

6. I am liking this blog thing. This is a recent discovery, but I really do
like writing up blog entries. It is nice if people end up reading them, but
irrelevant as for the most part I find the mere act of writing to be very
therapeutic.

What Am I Looking To Explore This Year?

1. Buying a house. It is time to start pursing this seriously. I know what I
want, I have the resources to pursue it, and I am confident enough in my job
stability and future outlook to consider more permanent residence. The idea of
making such a big bet, especially given how unpredictable things can be, is
concerning, but not enough to dissuade me. I am excited to see how this will
turn out.

2. Double down on the costuming. Along with this being my year anniversary
at Oracle it is also the anniversary of when I first started making costumes
and props. I had some major successes in that regard this year, and also some
major failures. I looking to complete two costumes this year. A Vostroyan
Firstborn from 40K and a Anatoray Soldier from Last Exile. More information to
follow.

3. Continue to improve my technical skills. This is going to be a recurring
goal. I should be learning new technical skills every day. If I continue to
make small incremental gains daily it will eventually add up.

4. Look into historical reenacting. Always had a interest in history and
would like the chance to gain a more in depth understanding by taking up
reenacting, specifically American Civil War. There is some expense to this, but
I would like to investigate some options more thoroughly this year.

5. Find old friends. Seems five years after high school some friends I used
to know quite well have phased out of contact. This is my fault. I should work
harder to retain what I have and recultivate what has been lost. I miss the
insight and experience they once provided.

One year down, seven more to go (shooting for the retire by 30 plan).

Categories
Story

Came and Went

Too much navel gazing and poorly thought out arguments on this blog
recently. The writer is not changing anytime soon, so let us try and lighten
the mood.

This happened a couple years ago. Not sure what year exactly, probably 2011.
I was at Anime Boston just coming out of the AMV viewing with my sister and the
rest of the group. The viewing is in a big warehouse shaped room. Specifically
‘Exhibit Hall D’ at the Hynes Convention Center. The room has a max capacity of

2837
and was pretty full. As happens in these places when everything is
done the exits became clogged as everyone filters out. So I am with the group
slowly making progress towards the door. Not much space to be had, a real elbow
to elbow situation. We are jostling forward when some guy reaches out from in
front of us and hands me business card. I took it on impulse. It looked and
said something close to this:

I am usually not one for pithy statements like this, but the act struck me
as incredibly nice. Probably why it has stuck with me for so long. It seems odd
to give a stranger such a personal compliment. Especially with a face like
mine. Wonder if he was just passing them out to everyone or if there was some
particular reason why he gave it to me. Maybe I looked gloomy. Maybe he just
wanted to get rid of it. I stared at that card for a while walking slowly
toward the entrance. Card said to pass it own so I obeyed. Right behind me was
a tall striking women. Long dark hair, straight clear face, neutral expression.
I remember holding the card in my left held and angling it back behind me to
give to her. She took it and looked down never breaking her expression. I
turned back up and into the crowd. There was a bit of a break so I moved up and
no doubt lost her behind me. I never saw her again, wonder what she thought?
Never would have been able to get away with that outside of a convention.
Especially since I usually look homeless. Probably why I keep going back, keep
hoping for one brief interaction like that.

Categories
Philosophy

A One Man Show

Paul, why are you single?

This question has been posed to me a few times. It takes a couple forms.
There is the aggressive one I choose to lead off this piece. Sometimes if I am
lucky I might get the more euphemistic, “why have you not met someone?”.
However, the worst is when the question becomes a statement, “you will one
day.” These thoughts are disappointing to me. I am not mad that people ask. I
am always willing to share my poorly thought out philosophies. This blog is
digital evidence of that truth. I am frustrated that after so long it seems
people remain unwilling to accept that I just want to be a one man show. Yes,
truly I live a pityingly misunderstood life. It is not my place nor desire to
tell you what should be meaningful in your life. Do not construe this post as a
criticism of your philosophies or actions. Consider it a statement or
explanation of my beliefs so that you might better understand my thoughts.

Prerequisites

Some words must be spent to provide the reasoning by which I approach this
question.

1. We must not allow ourselves to be swayed by emotion. Only consider what
can be proved. While it is true I can articulate my current emotional state I
have found it very difficult to show cause and effect between an action or
event and an emotional response. The only success I have found in describing
this relationship (an action creating an emotion) is for the basest of emotions
such as sadness or anger. I have not been able to quantify some of my more
complex feelings. Given that there are some instances where I cannot tell how
an action will make me feel, I must treat my emotions as untrustworthy. To put
it plainly, since we cannot base our actions on nondeterministic systems we
must discard such untrustworthy mechanisms. Consider only the systems that
produce consistent results.

2. I can only act upon my own experiences. I have never been in a
relationship therefore it is difficult to judge the actual value or mechanics
of one. I must act as if I know all that I need, because I have no other
information. Relying on other people’s experiences can be flawed as other
people are not me and therefore do not share my thinking process.

Goal Based Reasoning

What is the goal of a relationship? If you enter a relationship (dating) it
must have a defined end objective. For most that would be marriage or at least
long term cohabitation. The period of dating in this case can be seen as an
evaluation by both parties as to the relative qualities of the opposite
partner(s). Qualities here will be defined as the character, ideals, goals, etc
that a person holds as important. The process of dating exposes these qualities
and the involved parties determine what parts they are willing to accept and
what parts they are not willing to accept. If the parties involved determine
they have enough qualities in agreement a marriage is produced. Therefore to
date is to consider the other partner(s) for marriage.

I do not want to marry, so I do not want to date, so I am single. Why do I
not want to marry?

1. A marriage is static. Consider this popular notion of love locks. The lock symbols an
unbreakable vow. A perpetual commitment. I am unwilling to make such a
commitment. I have made many bad decisions because of my unwillingness
(stubbornness) to change. I will not subscribe to any agreement that could
never change. Paradoxical yes, but that is the state I find myself in.

2. A marriage is continued social contact. I do not do well when I am in
constant contact with people. Regardless of relationship after about two weeks
of close contact I find myself unable to stand others. I have not found an
exception to this rule.

3. A marriage is complete and total trust. To accept the contract of
marriage is to accept the parties involved have complete trust in each other.
This is an obligation I cannot meet. I trust people to the point where failure
of that trust can do me a minor amount of harm. After that point I have never
gone further.

4. A marriage is ownership and control. Remember the lock example? Marriage
is a lock in that it implies ownership of the parties to each other. Locks are
used to protect owned things. How many times have you heard the phrase “they
belong to each other?” It implies deep devotion, but it represents ownership.
Ownership manifests itself in the form of control. A partner(s) being able to
exert some degree of influence over the actions of another. This is not the
ideal state of existence. I do not wish to be controlled, even in the smallest
degree, nor do I wish to have or exert control over another.

I will ignore an explanation of possible benefits as the negatives I have
presented, in my determination, are greater than any possible benefit. Now, let
us consider the outlying case: a person pursing a relationship with a goal
other than marriage. This case is also important to consider as it too has
suggested as a possible course of action for me. Two questions to guide our
analysis: What are the possible benefits of this agreement? Why are these
benefits not sufficient to convince me? People pursing this type of commitment
are looking for continued, long term, emotional/physical connection with a
partner(s). I said I would ignore arguments based on emotion, but this
pervasive theory must be addressed. I do not see any downside to this
arrangement (as long as we apply the above boundaries to it), but I have no
need for it. People have often attempted to justify my need for such things by
asserting that an arrangement of this type will satisfy some nebulous emotional
state such as desire, love, companionship, etc. I do not see the benefits of
such things. I am aware of no emotional deficiencies in my character and thus
have no need to seek out ways to address the lack. Put simply, I have not felt
the need for such things nor do I desire to alter my current state. It is true
that some people find comfort in such pairings (grouping), but I do not think I
would have the same result.

Let us summarize. I have no need to pursue the goal of marriage/long term
commitment because the end result (the goal) is of no value to me.

How afraid are you?

I must regrettably consider that my reasoning has been unduly influenced by
my fear of the unknown or by some other deficit of character (stubbornness,
jealousy, arrogance, your choice). I admit to trying and failing a number of
times to fulfill my purely rational ideals. This contradiction may be occurring
here and may be contributing to my reticence. How can I tell if this happening
or not? The first prerequisite of my reasoning is the belief that I can
successfully divorce my rational thoughts from my emotional thoughts. If I have
failed at this goal my reasoning is wrong (partially or fully). Therefore, I
must investigate my feelings regarding the matter to discern if they have
affected my reasoning.

1. Am I angry at rejection and seek an alternative explanation? Hard to
judge if I have actually been rejected multiple times or just assumed the worst
end result. My ability to gauge intent in others is poor.

2. Am I too stubborn/arrogant to change and try such things? This is
definitely possible. I have acted irrationally before because I was unwilling
to compromise.

3. Am I jealous of others? Also possible, but I think less likely. Past
experience indicates I care very little about what others have. Perhaps this is
an exception?

4. Am I afraid? This explanation is the most likely case. In the past I have
definitely been adversely affected by fear.

Not much of a conclusion to be drawn here, more of a halfhearted shrug. I
have had great difficulty in understanding my emotional system which is why I
try so hard to divorce myself from emotions when it comes to decision making. I
can only say for certain I may not have been successful in this regard.

Tempted Yet?

I have already wasted far too much of your time on this drivel, but consider
one last point. Despite all this I still confess a certain temptation. I know
and have proved to myself that such fancies can only result in disaster, but
perhaps I am mistaken. Am I really willing to sacrifice such experiences? For
now, yes.

Categories
Ethics Philosophy

My Responsibility Toward Others

I try to not make declarative statements about how you should or should not
act. Instead, I can tell you how I act (or try to act) and you can evaluate and
decide for yourself how worthwhile the positions I take are. What follows is
not exactly my guiding principles (rules) towards personal interactions, but
more like points on a graph that form a line that roughly correlates to how I
approach things.

1. Always tell the truth

When you talk to someone they expect and deserve the truth. Not a convenient
half truth, or a palatable partial truth, but the whole unadulterated truth.
Why do they expect the truth, because talking is a verbal swapping of truths.
Have you ever asked a question of a person and wanted a lie? The whole point of
communication is accurate transfer of correct information. It is of no value to
receive information that is incorrect. Let us consider a possible interaction
where I lie.

Coworker 1: Paul can you explain to me how this widget works? Paul: Yes it
works like this, BLAH BLAH BLAH.

From the outside it looks truthful and it helps me preserve face for the
moment, but there is no good long term benefit. The result of this interaction
for coworker 1 is they go back to her/his desk, they try to use the widget, and
things do not work out. Coworker 1 has gained nothing from the interaction,
starts to question my knowledge/skill, and now must now go find someone or
something else to get the information she or he needs. What is the result for
me? I have mislead someone who needs help and I have robbed myself of the excitement of not
knowing
. Why did I do this? To save face, an endeavor that failed moments
later once my advice was tested. The whole concept of saving face was worthless
to begin with since the last thing
anyone cares about is me
.

This is not an excuse to discharge your decorum. You can be gentle with your
truth, but it must be the truth.

2. Never leave anything on the table

Consider how easy it could be for you to die. Perhaps you get in a car crash
on your commute. Maybe you have a heart attack in the middle of the night. You
could electrocute yourself with a toaster during breakfast. As easy as it is
for you to die, so it is too for the people you know to die. Anytime you part
you could never see that person again. Given a long enough time scale this will
eventually become true. It is for this reason you must never leave something
unsaid or unresolved, because you may never get another chance. I call this
leaving things on the table. You have, through inaction, left some aspect of
your friendship/relationship unresolved: a debt, a argument, unexpressed
gratitude or feeling. Each time I say goodbye I ask myself, “have I left
something on the table”. It is a reminder to never forget our mortality and the
morality of others.

3. It is your fault if someone does not understand
you

I would say about 50% of the time I try and explain something to someone I
fail. I have a whole section of memory dedicated to the puzzled faced, the
confused look. It is tempting to place the blame on the person I am explaining
something to. It certainly would absolve me of wrongdoing, but how is this
helpful? The matter is left unresolved, the person left uneducated. It is your
job to spread knowledge. It is for this reason that anytime you try and explain
something to someone and fail the fault is yours alone. When you finish
explaining something say this phrase: “does that make sense?”. If the answer is
anything other than a clear “yes” then try again. Use more general terms, use a
simpler metaphor, explain less in one shot.

4. No one owes you anything

It would be nice to always be told the truth, to always be respected, to
always be valued, but by default these intangibles are not owed to you. The
only respect given to you is that which is accorded by the law. The rest you
pay for by keeping your word, being reasonable, being honest. Everything you
have must be earned. Consider this quote from a book I once claimed to have
read, The Bell Jar:

If you expect nothing from anybody, you’re never disappointed.

With this philosophy, if someone lets you down, mistreats you, does not help
you when you are in need, no worries you never expected it to be any other way.
This seems, initially, to be incredibly negative. It assumes the worst in
people. This is a charge I will not dispute. I posit the benefit from this
philosophy is in the moments when your expectation is refuted. It is the time
when you expect nothing, but are given everything. It is the experience of
having your wallet returned when you lost it, the relief of someone helping you
carry a heavy load, the welcome advice to resolve a problem. When you expect
nothing / are owed nothing every time you are proved wrong becomes a gift.

5. Never waste a person’s time

Time is a finite resource to a person. Never waste it. If they do not care
about what you have to say, best to not say it. If you do speak, get to the
point. If you told them you would be there at 5:00PM, be there at 4:50PM so
they do not have to waste time waiting on you. Give reasonable estimates of how
long a task will take. Apologize if the task takes longer even if it is not
your fault. Any interaction with others uses a person’s time. Make them feel it
was worth it.

Not sure I was able to capture everything here. I have other thoughts, but
they are too nebulous to commit to yet. Perhaps there will be a follow up
post.

Categories
Engineering Philosophy

Why I Love Documentation

Documentation is an extension of the engineering process not an afterthought
or a separate process. When I say documentation, I am referring to the text you
produce that gives an overview of how a project was done (architected) and, in
some cases, how to go about using something. I am not talking about inline
documentation like code comments. When you document a project you are seeking
to answer two questions:

  1. Do I understand what I just did enough to explain it?
  2. Upon review, can I improve what I just did?

The first question challenges you to actually explain what you just did. If
you were explaining a feature you wrote you would talk about how all the moving
parts fit together. To put it a little more concretely you explain how certain
classes/objects interact with other classes/objects, how you went about
segregating your work, what design patterns you did, how data flows from one
form to another. This is what people care about, because here you describe how
to actually use what you did. I am a huge fan of providing concrete, full code
examples of how something works. If you want to know how something works, the
best way to learn is to look at the code. This is extremely easy when the
person who wrote it provides a concise detailed walkthrough. A good example of
this would be the JDeveloper
ADF tutorial docs
. Clear incremental examples walking through how to do
something complicated. If you can answer this question you prove to yourself
you fully understand what you just did. If you cannot answer this question you
will pay for it in the future, either in your inability to help others use what
you have written or the difficulty you face fixing a bug/adding a feature. Use
documentation to ensure you know what you are doing.

The second question is a byproduct of the first. While working through what
you just did you are also evaluating how well you actually did something. This
is akin to editing a completed work. I can only speak of my own experience, but
I have two working modes: producing and editing. When I produce I have a
limited view as I seek to solve small discrete problems one at a time. How do I
process this bean, where can I get this data, what SQL command returns the
proper set of data. It is only when I pull back out to editing mode that I can
take a broad view and see how my work integrates into other pieces. Why have I
not condensed all these similar business class function into one call, why did
I use a array in this data structure when a hash map offers a quicker lookup
time. When you are immersed in work it can be very easy to lose the larger
picture of what you are accomplishing. Only by reviewing what you have done can
you pull back and evaluate your creation.

This philosophy does not just apply to code. One of the guiding principles
of this blog is a venue for me to document my past project thoughts, like I
have done with my
helmet thus
far. I have found that the mere act of organizing the fractured thoughts into
ordered structured sentences can I better understand what I just did. It allows
me to understand the process I followed and determine ways I can improve it.
And that is the key to why I love documentation. Documentation is self directed
learning. This is your craft, it is worthless to practice a craft without the
desire for constant improvement. Use documentation as a means towards
constantly improving your craft.

For a more detailed, programmer centered overview, check out Yevgeniy
Brikman’s post on the subject
.

Categories
Cosplay

Cadian Helmet Complete, Mostly

Finished the helmet for the most part today. If you have forgotten what got
us to this point please see my previous post. Couple
of tiny things I will look to address, but I would say the bulk of the work is
complete. Objectives for this post: look at the final piece, give a brief
overview of the final steps, critiques, discuss some possible future work, and
offer some project conclusions.

Final Piece

Here is a shot from the front and the back:

More images over at the gallery.

Finishing Steps

When last we met I had sanded smooth, as best I could, the bondo covering
the top of the helmet. Still there were a number of craters where the bondo did
not quite fill in enough. So I did another layer of bondo and sanded that down
again. This did not help much. I still had a lot areas where it never quite
smoothed out. Furthermore, the more attempts I made at sanding things out the
worse it seemed to get. Similar to Father Ted.

I would sand too much and get rid of all the bondo, or too little and it
would be inconsistent with other areas. So where does that leave us? A Helmet
that is mostly smooth, but has some craters and some jagged edges all over the
place. I tried two solutions with mixed results:

1. Fill the craters with white glue. This did not work. The glue just
evaporated out of the crater and did not fill it.

2. Fill the craters with hot glue. Almost all of my projects end up
defaulting to using hot glue at some point. This was moderately successful in
filling in the craters, but should be done sparingly as it was easy to use too
much and end up with a worse problem.

Even doing that it is still clearly not smooth in some areas, but I
continued anyways as it was good
enough
. I applied two coats of primer to prep it for painting. Then I used
some generic olive paint (same color as the Kasrkin armour) to cover the whole
thing. For the Imperial Guard insignia on the front and the unit number on the
back I used plain white. To finish everything off I covered it in a clear matte
lacquer to protect everything from chipping.

Critiques

  1. Not smooth. While this is a critique normally applied to my character, try
    as I might I was not able to get the helmet as smooth as you would expect a
    helmet to be. Although I do not have a time breakdown I would say after
    assembling the paper model most of time was spent bonding and sanding trying to
    get things to look nice. I think it looks ok as it is, but close inspection
    reveals a number of imperfections. Like lions at the zoo, the helmet looks best
    from a distance.
  2. The Imperial Guard insignia on the front is not mirrored correctly. Not
    sure what went wrong here, the wings of the symbol are sized different even
    though they were originally not. Perhaps this can be fixed by improving the
    paint job on the front.
  3. The Imperial Guard insignia needs eyes. I tried a couple times to add eyes
    to the skull, but the results were unspeakable awful. Right now that is beyond
    my meager paint detailing skills.
  4. Inside of helmet not smooth. Not a huge issue, but some of the fiberglass
    mats have solidified into some quite sharp stalactites that should be smoothed
    out. Should be mitigated once I install some padding.
  5. Sizing issue. People always said I had a big head and it shows
    trying to get this helmet on. It does fit and I can wear it, but it scratches
    the sides my head while trying to put it on. Also, if you remember, I had to
    hack out some of the back out to get it to fit in the first place. I have to be
    more careful in the future to find these issues earlier.

Future Work

  1. Install a strap. Looking at some strap options now, hopefully something
    that will screw in easily to the helmet itself. Probably something I should
    have done before the bonding.
  2. Install padding on the inside. Definitely need to get the inside
    comfortable if I plan on wearing it for awhile. I have some excess EVA foam
    lying around, or I could pick up some helmet inserts.
  3. Make better Skull Eyes.

Project Conclusions

This was my first attempt working with a resined paper model and the results
are a bit of mixed bag. The end result is acceptable, but far from good. I
remain unconvinced of the need to bondo the top. I deferred to the advice of
the
tutorial
I was following, but I think I gained little from it. Structurally
the helmet shell seemed rigid enough for use, and after applying the resin, it
was smooth enough to work with. The bondo did provide a nice armour like layer
on top, but cost too much time to sand down and was too difficult to work with.
Maybe I was too hasty and should have stuck with it more, but it seemed like I
spent increasing amounts of time for decreasing gains. So, like most of my
projects, there are nuggets of good work to be found embedded deep amongst the
rest of the shoddy construction.

Categories
Engineering Philosophy

Your Responsibility as an Engineer/Doer of Things

Have you ever looked over your job responsibilities? Here is an example
listing of some responsibilities of a software engineering position:

Responsibilities:

  • Application design from concept through development and implementation
  • Provide technical leadership and guidance to your team members
  • Establish a solid project framework and excellent development
    processes
  • Consistently deliver quality software and services
  • Work with internal and external teams to co-ordinate parallel development
    efforts into single releases

Lot of stuff in there, but if you filter out all the buzz words and business
speak you really only have one responsibility, the most important rule for any
project: GET THINGS DONE. This may seem obvious, but it is so easy to get
bogged down in the implementation of something that you lose sight of this
goal. Look at some important coding practices:

  • Code makes sense to people reading it after you (consistent style, clear
    function/variable names, obvious segregation of tasks).
  • Code is free of extraneous variables, function calls, bad comments.
  • Your algorithms are as time and space efficient as can be.

But what is that list missing:

  • Code must work.

It does not matter how efficient, clean, nice your code is. If your code
does not work you fail, do not pass go, do not collect $200, go to jail. Sure,
try and follow all these goals while you are working. In fact a good engineer
would actively be following them all the time. But, that said we live in world
with time tables and deadlines. No one and I mean absolutely no one cares about
anything else if your code does not work when they need it to. It is the same
concept when working on building something physical. Stop getting held up on
getting things perfect, do the best you can in a reasonable amount of time and
move on. Perfection is for finished working things, not for projects in
progress.