Thursday, August 16, 2018

The Best Programming Language

At one job interview they gave me a full page list of computer programming languages and asked which ones I knew. There were hundreds on the list! I thought SNOBOL was a trick question, turns out there really is a language called SNOBOL. AT&T Labs, mid-60’s. Wow.

Job analysts say the ability to program, even at a basic level, is becoming a necessary general skill. Being able to break huge problems down to smaller solvable tasks, helps us overcome many challenges. And programming can be really fun!

Which one do you learn?

Each language has strengths; people who love the language say it is the best. What they really mean is “It is the best to me.” That’s nice. How do you find the best for you? Use the “Observe, Orient, Decide, Act” (OODA) loop to find the answer.

Observe – Yourself, actually. What do you like to do? What problems do you like to solve? Some people like to work statistics for sports teams. Others like to build web pages to share information. I like to play Role-Playing Games (RPGs) and a lot of my coding as centered on that. Be honest with yourself at this stage and it will pay off soon.

Orient – Each language has strengths and challenges. C is a powerful language that works for systems programming but is not as good for web pages. PHP is exactly the opposite. Note that both languages can be used where they are not best but you will have to work harder at it. Focus on the strengths a language has and find half a dozen or so that work really well with what you want to do. If you have no idea where to start, check out the TIOBE index. Do a little research on the top twenty languages and see which ones seem interesting. If you don’t find several choices then go on down the page, they list the top 100 according to their metrics.

Decide – This is both fun and risky. The way to decide is to spend a few days with each language on your list. See how much you enjoy doing the things you want to do. Do not pick a language based on TIOBE ranking or number of jobs on Dice. Pick the one that works best for you. For what you want to do. Decide based on actual experience with the language. Starting out can be frustrating; how do you compile code? Is this even a compiled language? How do I do simple stuff like “Hello World”?

Act – This is the big step; the real challenge. You have spent a few days with multiple languages, now you commit the next ninety days to just one. That’s right, about three months. Focus on one language and learn the basics. Do the things you want to do with it, research how to do those things. Do not pay attention to claims about other languages being better, faster, more modern, or whatever. You have your language, get to know it. Work side by side to get things done.

Does all that sound like a lot of work? Yes! That’s part of the learning process. A big part of coding is breaking the problem down and figuring out how to test each question. Then you put the parts back together and test the questions again.

The critical point is this: if you choose a language that you enjoy coding in, you will code more. That is the only way to get better at coding; code more. Learn new things and then code them. Go back to your old code and make it better. Look at some library code from your language and work to understand it.

Soon you will be solving the problems you like to solve with the language you want to code in. That’s the best place to be, and with the best language.

Friday, April 27, 2018

Book Review: "The Writer's Journey"


"The Writer's Journey: Mythic Structure for Writers" (3rd ed)
Christopher Vogler

WIBA? Yup

There is a familiar, if sometimes hidden, pattern in great stories. The main character begins "normal" and then gets thrust into a strange new world. Struggle, failure, challenge, success. They return to the normal world deeply changed. Frodo Baggins, Luke Skywalker, Harry Potter, Percy Jackson, Hazel and Fiver; the list goes on. Gender, skin color, even species; these matter not. Attitude. Fortitude. Their heroism speaks to our own.

In "The Writer's Journey" Chris distills Joseph Campbell's "Hero with a Thousand Faces" into a very readable and implementable format. He does not demand rigid adherence to structure but clearly shows how good stories can flow. Reading "The Writer's Journey" with my own books in mind pushes me to delve deeply into my characters and the universe they live in.

The first draft of my first book in the "Domici War" series wandered. A lot. I enjoyed the story becuase I knew the characters but other readers gave it a more "ho hum" response. Then someone turned me on to "The Writer's Journey" and I used the structure to write the second book in the series. Feedback was clear; Book Two was much better written and had much more appeal than Book One.

Throughout the book Chris pays due homage to Joseph Campbell's "Hero With a Thousand Faces". Of the two books I strongly prefer Chris' work. While "Hero With a Thousand Faces" explains some things "The Writer's Journey" helps me write a much better story.

You can find layouts of what "The Writer's Journey" covers on the web. When you have a character in mind, though, I encourage you to walk with them through the Journey. You, your character, and your readers will be glad you did.

Would I Buy Again? Yup

Monday, September 4, 2017

Do stuff!


"Real artists ship." -- Steve Jobs 
"Just do it!" -- Nike slogan 
 "Do Stuff!" -- Me 

Seeing people who have achieved lifts us up. I am a science fiction writer and I love to read good books. It is easy for us to think that the author, or the achiever, was bound to be successful. Usually this is as far from reality as it can be and still be a part of our space-time continuum. 

 Achievers work on ideas. Sometimes their own or sometimes an idea from someone else. It is seldom the nature of the idea itself that gives success. Each of us has hundreds of ideas every week. Sometimes each day. If implemented the ideas would make our lives better and may help others as well. 

Ideas are easy to come by. If it was just the idea we would all be achievers. Authors. Great guitar players. Better parents. 

 Achievers work on ideas. It is the work that brings the achievement. The achiever continues to work on the project. That work includes failure. Achieving requires skill, patience, and resources. The achiever often has to side-step the direct work to gain the resources or skill to achieve. Sometimes these are hard choices and a would be achiever gets discouraged or side-tracked. 

Achievers return to their work. We all make mistakes and have setbacks. We all wonder if the task is really worth it. That is a decision each achiever must make for themselves. Sometimes daily. 

Achievers work on ideas. Some times the work builds the achiever. Often the work to achieve makes us a different person. A better person. The wise achiever learns to work with and for others. Achievers work on ideas. 

What are you working on?

Tuesday, August 29, 2017

Book Review: "The Emotion Thesaurus"


“The Emotion Thesaurus: A Writer’s Guide to Character Expression”
Angela Ackerman and Becca Puglisi

WIBA? Yup

I was stuck: several different characters that showed their emotions the same ways. Worse: I have lots more characters to throw into the mix. Still Worse: The characters cover almost every age group possible.

Poking through Amazon writing book recommendations led me to “The Emotion Thesaurus”. Yay Amazon! Within a few days I was eagerly testing to see if this was a good buy. Almost a dozen useful pages of introductory material followed by seventy some emotional states. Each state has roughly two pages of information and a random “Writer’s Tip”.

Each emotion starts with a one line “Definition”. Then a couple dozen “Physical Signals” for third person description followed by a few “Internal Sensations” and “Mental Responses”. I’m working on more First Person writing and those two sections are really helpful!

Next up are “Cues of Acute or Long-Term <emotion>”. What happens when you’ve been <emotion> for too long or too deeply? Then the kicker: “May Escalate To”. If the character is <emotion> now then it may lead to one or more <other emotions>. My stories develop as I write and getting ideas on how the current scene can impact a character later is awesome! It gets me thinking about what can happen and gives the reader a better story. Last up are “Cues of Suppressed <emotion>”; what might it look like if the character doesn’t want to show their <emotion>? Or can’t?

Seventy plus emotions given great detail. Start with “Adoration”. End with “Worry”. Find “Defeat”, “Desire”, “Happiness”, and “Regret” in between. I’ve used this already and will continue to do so.

Would I Buy Again?   Yup