I saw some recent Quora posts about the "Top 10 things that we should be informed about". The responses were mostly depressing. There is some good content and information that could be gleaned from what was said, but most of it seemed either obvious or somewhat worthless.
Many of the items people mentioned sounded like the cryptic scribblings of a self-help guru:
- Happiness is a conscious choice
- Right here, right now. Mindfulness extends life infinitely
- Self-awareness is the lubricant to all social friction
- You both need and don't need other people
They were sometimes self-centered:
- Know how to talk to rich people
- If you cannot picture your life partner making you laugh 50 years from now, bail out
Some just seemed to be a sounding-board for chips on shoulders:
- The best way to judge any religion or sect is to observe countries that it has dominated for at least a century
- No matter what you do, you will never be able to fix your parent's problems
- If you don’t get into university or if it’s just that you don’t want to go, don’t sweat it
- Being Average is OK
Some lists were at least more focused on the conventional wisdom of the day and were trying to emphasize the importance of virtues of some sort at least in a humanistic framework:
- Your health, not just now but in the future is critical. Take care of it.
- Honesty, integrity, reliability, decency, kindness, and the like, should become givens in your life where others can easily see them.
- Understand the power of science
Here is my list. I realize that this list is somewhat arbitrary and could of course be different if I were to have written this 5 years ago, 5 years in the future or even next week:
- Seek wisdom, but understand that although knowledge is important, it is not the same as wisdom
- Do good, but realize that doing good does not make you or the world a better place by itself, but you should still do it
- Love people, but know that loving is not the same as agreeing with
- Pursue truth, but realize that although truth is objective, how one believes things to be true is interpreted individually
- Respect authority, but be willing to stand up to it when it is wrong
- Live for God's glory, but be aware that you will always be fighting the temptation to replace God with yourself
- Help others, but not because you ever expect them to help you
- Question your motives, but don't be paralyzed by your imperfections
- Defend the defenseless and stand up against injustice and evil, but realize that many who you join forces with are doing so for bad or selfish reasons
- Determining your own success should consider not just this life you live now but more importantly, eternity
“But where does it end?” Asked the child patiently. He was a young boy -- somewhere between 6 and 7 years old and still full of wonder and curiosity.
“What if I told you it went on and on for ever?” I said.
“Well -- nothing can go on and on forever… It has to have an end somewhere.”
“What about space?” I asked, “If you go in a spaceship away from the sun, will you eventually get to the edge of something?”
The boy rolled his eyes, “But that’s different… This is just a tunnel”.
“Well, it’s a long tunnel but if you must know Derek, it ends about 3 kilometers from here in another chamber much like this one.” The room we were standing in now was quite large -- maybe 40 to 50 feet tall and a little wider. From where we stood, it basically looked as long as it was wide. One side of the room was an iron gate through which we had just entered, and the other side of the room tapered down into a vestibule and a long corridor shot off straight north of our present location. It was this passage that Derek was staring down now. And it was a bit strange. The dimensions were perfect. From where we stood, with our flashlights in hand, it was a perfectly straight line down the tunnel. The light only carried so far and limited how far we could see, but the effect of the perfectly square cut walls of the channel resulted in an effect that seemed too real to be real. I guessed it was because I was used to thinking of underground tunnels like this in terms of sewers or ancient catacombs -- functional structures and ones made with imperfect tools. But this was no sewer or catacomb. We were currently standing in a service entry to one of the most extensive bunker complexes in the world.
“How long is a kilometer?” Derek piped in, interrupting my thoughts.
“Well, it’s like a mile, but shorter.”
“Well if it’s like a mile, why not just say a mile?” asked the curious Derek.
“Mainly because the rest of the world has got used to using kilometers and is asking us why we don’t just use them”, I parried.
“Well, everyone knows how long a mile is”, he responded. “If I walked to school, I’d have to walk one and a half miles. A mile is long but you can walk that far if you need to.”
“The main reason, actually, is because the units are hard to work with.” Derek just looked at me blankly. “The units that we use for a mile are hard to convert to other units. Do you know how many feet make a mile?” I asked.
“A lot -- over 5,000 I think”
“Right -- it’s actually 5,280 feet in each mile. And there are 12 inches in each foot.” Those are hard numbers to work with. With kilometers, they measure it to be exactly 1,000 meters. And 1 meter is exactly 100 centimeters, and each centimeter is exactly 10 millimeters. It’s easy because everything is divisible by ten”. I was starting to feel a little pedantic.
“But why is it harder to remember 5,280 instead of 1,000? They’re both just numbers and they’re both pretty big. Why is it easier just because everything has a ten in it?” asked Derek.
“I don’t know -- I guess our brains just can handle it more easily. So for example, it’s harder to multiple 5,280 by 12 compared to multiplying 1,000 by 10.” I said, somewhat unsure I wanted to into detail of why multiplication by the radix of any numeral system was inherently easier. I wondered suddenly if the ancient Babylonians with their base 60 system or perhaps the Mayans with their base 20 system would feel uncomfortable trying to multiply 100 by 100. It sounded weird that they would. Stupid Babylonians. It’s there fault we’re still stuck with 360 degrees in a circle and 60 minutes in an hour.
“I guess that makes sense.” Derek said, jolting me back to the present, “But it doesn’t really help me because I still don’t really know what a kilometer is” he said, somewhat sadly.
“You and 300 million Americans.” I said, glumly.
Just to the left of the long corridor, on the concrete wall was a very large painted number indicating “27”. According to the map that I had been looking at all morning, that was good -- service entrance 27 was what we were trying to find and it had actually been fairly easy to get this far.
I was a little surprised by the lack of any sort of security features. There were no visible locks, or mechanisms to restrict entry, no electronics visible of any kind. The iron gate to enter had been shut, but it was held simply by a latch to prevent it from swinging in the wind and probably to keep debris and larger animals from getting in and making a mess. Everywhere I looked, all I saw visible was expertly finished concrete walls.
“Well we better get going. You lead the way Derek.”
Derek already had his flashlight at the ready and he eagerly moved forward toward the corridor. “Let’s do some exploring!” he said with a big goofy smile.
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.
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.
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.
I have a modest proposal for the state legislature: I think we should pass a law that requires doctors to wear a little badge on their shirt that says "Unclean" if they fail to wash their hands at least 12 times per day. Washing your hands is good! It's almost free! And any doctor who doesn't comply with the law is obviously evil for failing to meet our arbitrary standards. Doctors will probably object to this because it's silly and also because any doctor who doesn't meet the requirement (regardless of their reason) will look really bad with an "Unclean" badge on their shirt, but that's not really important because after all they're evil (see above). It's our right to have doctors with clean hands!
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).
Glory be to God for dappled things For skies of couple-colour as a brinded cow;
For rose-moles all in stipple upon trout that swim;
Fresh firecoal chestnut-falls; finches’ wings’
Landscape plotted and pieced—fold, fallow, and plough;
And all trades, their gear and tackle and trim.
All things counter, original, spare, strange;
Whatever is fickle, freckled (who knows how?)
With swift, slow; sweet, sour; adazzle, dim;
He fathers forth whose beauty is past change;
Pied Beauty by Gerard Manley Hopkins
My 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 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 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!
I’ve found this discussion a very interesting one… There’s a lot of conjecture out there that the iPad (and similar devices) shifts use of the Internet away from “creating” and towards “consumption”. To some extent, some of this seems obvious. Activities like music and video are clearly consumptive and these activities often are more convenient (and seem more of a probable use) for portable devices like the iPad. Also, in general, reading is quite easy with the iPad/Kindle but typing is harder than with a regular laptop or keyboard. I find myself definitely being a consumer far more on the iPad. Even with emails, I tend to read and mark for later handling far more with the iPad. On my desktop on the other hand, I tend to immediately reply to the emails that I can knock out in the next minute or two. I might look at pictures on my iPad but I definitely don’t any editing (although the Photoshop Mobile app is kind of neat for really simple tweaking)
So while I can agree with the observation that iPads and other smaller devices are currently being used for consumption vs. creation, I think that this may just be a phase. Computer users have used keyboards for a long time. In fact, the first keyboard appears to date to the 18th century and our current qwerty keyboard dating to 1873. In addition, the mouse, first created in 1963 but not in common use until the 1980's is also ubiquitous in modern systems. One could argue that it's a powerful device for manipulating interfaces, but I don't think it's the end-all of human-machine interfaces.
There will be something new. There always is. Touch-based computing has its strengths and weaknesses. There's an almost nauseating volume of interfaces that can all be summarized as "sort of like the interface used in Minority Report". With faster processors, better algorithms for processing inputs, etc. it simply seems a matter of time before a new breed of general purpose input devices will become standard.
Keyboard input (and to a slightly lesser degree computer mouse input) are currently preferred because they are precise. Learning to type is a relatively easy task and provides a very easy-to-control way of interfacing with systems. Using a mouse is trivial to learn although it is much slower to use for many tasks. Its strength is that it works very well in dealing with graphical environments that involve manipulation of elements that rely on eye-hand coordination. The combination of both in modern systems allows precise control when needed, and manipulation of complex interfaces when needed.
Touch input devices provide a more natural feel for the second type of interface, but not the first. Precise input is slow and painful The value gained is that the iPad and similar devices are instant-on devices that don't require you to sit, position yourself, or even use both hands. A user gains speed, portability, and convenience but loses precision.
Two things really interest me in this area. The first is motion-based systems like (to some extent) the Wii and more importantly the Kinect. Both systems use the concept of movement (one with a controller you hold and the other by simply viewing the user themselves). The second is voice-based systems like Siri. There have been many voice-based systems previously, but Siri seems to have attained a more natural level of interaction that I think finally makes voice control more practical.
The interesting thing about both systems is that both approaches reduce precision in the system and attempt to get at underlying intent of the input. You can ask Siri "What's the weather like", "will it rain today", or "Weather" and it will give the same response. The attempt is to map a number of inputs to the same output. It can handle heavy accents, variations in speed, pitch, and intonation and still give results that make sense. Kinect based systems are looking at standard or typical behavior and are all about averaging inputs to try to get an approximate value rather than working with precise values.
These new technologies can be leveraged in interesting ways. It's clear that games that involve more physical activity are fun and interesting. It's also clear that being able to speak to your phone to perform tasks that would take longer to do with the touch input saves time. But will anything ever replace the keyboard?
I don't have a crystal ball, but I think the important thing is that touch input, voice input, and motion-based input are really not trying to solve that issue. All of these inputs are inherently less precise (just as a mouse is less precise than a keyboard). Although there are some very interesting efforts to use a Kinect to write code in Visual Studio, it seems more likely that at best, motion technology could replace only the mouse or replace the mouse for specialized types of manipulation. Speech seems to be a good way of performing out-of-band or contexual tasks (say for example you're in the middle of a coding task and want to send the current file to a team mate for review without stopping what you're doing and performing this task manually.
Rapid but precise input is what's needed for devices like the iPad to shift the trend from consuming information to creating information. This could be accomplished by new types of one-handed keyboards (which have been attempted); I have a hard time seeing that we will be able to achieve precision with devices not controlled by the human hand. Another option is a radical change in the interfaces themselves. To give an example, instead of writing code using a complex written syntax like that in most modern languages, a special language could be developed that encapsulated the structure of the code but could be represented in a format that could be more easily parsed and understood audibly. Transitions like this have already taken place in languages like LabVIEW which attempts to represent programming code in a visual format vs. a a written syntax. I have a hard time picturing how this could be accomplished, but in theory, I can see that it may be a possibility. There will be naysayers. But there are naysayers now with regards to high-level languages which already abstract an enormous amount of "what really happens" from the user.
Any thoughts on input devices and human-computer interaction as it's currently evolving?
I was delighted to browse through this book recently. A fun read for anyone interested in language. It's not a long or complex book, but really just a nugget about some interesting developments in English with plenty of historical anecdotes and references as well as an interesting list of collective nouns.
The at-first confusing title is simple an example of one of the collective nouns or "terms of venery" that come to us from Medieval hunting tradition. Other examples include a "Murder of Crows" and a "Gaggle of Geese". These collective nouns were used by gentlemen at the time to refer to groups of animals. The terms themselves were somewhat a mix of an argot and an inside joke (as many of the terms are quite playful or imaginative).
The information is not particular practical or useful, but clued me into an aspect of Medieval life that I was previously unaware of.
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.