Jerry Yoakum's thoughts on software engineering and architecture from experience working with code, computer science, python, java, APIs, NASA, data mining, math, etc.
Tuesday, January 08, 2019
Use Optimal Data Structures
The structure of data and the structure of programs manipulating that data are intimately interrelated. If you select the right data structures, your algorithms (and thus your code) become easy to write, and easy to read, and therefore easy to maintain. Read any book on algorithms or on data structures (they're one and the same!).
When preparing to write a program, you should develop the algorithms and data structures together. Try two or three or more different pairs before you select the best one. And be sure to encapsulate the data structure in one component so that, when you later find a better structure, you can change it easily.
Reference:
Kernighan, B., and Plauger, P., The Elements of Programming Style, New York: McGraw-Hill, 1988.
Get Javascript in WordPress
I've been working on a WordPress site for a client/friend. He wanted some custom generated content so I used Javascript. However, by default Javascript is disabled in WordPress. Thankfully GoDaddy support had the answer.
https://www.godaddy.com/garage/3-ways-to-insert-javascript-into-wordpress-pages-or-posts/
We're not using GoDaddy for hosting but they still came through with a good answer so I want to give them credit. I used method 1.
In addition to giving proper credit, this post will serve as a reminder to me what was done to get Javascript working on his site. Changing the theme and possibly updating the theme will likely break this fix.
https://www.godaddy.com/garage/3-ways-to-insert-javascript-into-wordpress-pages-or-posts/
We're not using GoDaddy for hosting but they still came through with a good answer so I want to give them credit. I used method 1.
In addition to giving proper credit, this post will serve as a reminder to me what was done to get Javascript working on his site. Changing the theme and possibly updating the theme will likely break this fix.
Monday, January 07, 2019
Design Is Multidimensional
When designing a home, architects represent it in many ways to fully understand and convey its essence to builders, buyers of materials, and home buyers: elevations, floor plans, framing, trusses, electrical routing, plumbing routing, concrete shape, door and window framing details, and other points of view. The same is true of software design.
A complete software design includes at least:
- Packaging. Often drawn as a hierarchy chart, this captures "what is part of what?" It often implies data visibility. It also shows encapsulation, such as data and functions within objects.
- Needs hierarchy. This captures "who needs whom?" Drawn as a network of components, arrows indicate which components need something. The needs might be data, logic, or any other information.
- Invocation. This captures "who invokes whom?" Drawn as a network of components, arrows indicate which components "call," "interrupt," or "send messages to" others.
- Processes. Sets of components are packaged together as asynchronous processes. These are copies of components that are running simultaneously with other processes. Zero, one, or more copies may exist at one time. This should also specify conditions that cause a process to be created, executed, stopped, and destroyed.
Reference:
Witt, B., Baker, F., and Merritt, E., Software Architecture and Design, New York: Van Nostrand Reinhold, 1994.
Labels:
architecture,
design,
software-engineering
Location:
Springfield, MO, USA
Sunday, January 06, 2019
Scrum Bums: A Get Fuzzy Collection
Scrum Bums: A Get Fuzzy Collection by Darby Conley
My rating: 5 of 5 stars
Get Fuzzy is my go to comic to cheer me up. Scrum Bums does not disappoint.
View all my reviews
My rating: 5 of 5 stars
Get Fuzzy is my go to comic to cheer me up. Scrum Bums does not disappoint.
View all my reviews
Wednesday, January 02, 2019
Think Like a Freak
Think Like a Freak: The Authors of Freakonomics Offer to Retrain Your Brain by Steven D. Levitt and Stephen J. Dubner
My rating: 5 of 5 stars
There is a lot to like about this book. I really enjoyed the multiple short stories format that remained connected without repeating large chunks.
View all my reviews
My rating: 5 of 5 stars
There is a lot to like about this book. I really enjoyed the multiple short stories format that remained connected without repeating large chunks.
View all my reviews
Tuesday, December 25, 2018
Using Spatial Words Can Help Kids Be More Comfortable With STEM
I like the below news story:
The way you talk with your child can help them to understand science and math
https://wkow.com/news/top-stories/2018/12/24/the-way-you-talk-with-your-child-can-help-them-to-understand-science-and-math/
Although there are two points that I would like to consider:
The way you talk with your child can help them to understand science and math
https://wkow.com/news/top-stories/2018/12/24/the-way-you-talk-with-your-child-can-help-them-to-understand-science-and-math/
Although there are two points that I would like to consider:
- I suspect that the additional time spent with your kids has a bigger impact than the subject matter.
- The story focused on very little kids with concepts that they will almost definitely will pick up later if you don't introduce those ideas. However, if they are the last ones to learn those concepts then they might be embarrassed and will shy away from Science, Technology, Engineering, and Mathematics (STEM).
I know adults that would be hesitant about which way to turn an object if I said, "Please rotate that to the left." They definitely can figure it out but they are not comfortable with the language.
Of course, the same phrase, "rotate to the left," could mean something different to someone from a different part of the world but that consideration is about teaching to consider context.
You might be thinking that this is a silly little thing to put any thought into but imagine what it means to rotate an array to the left or right. Or to rotate a multidimensional array. You quickly start to get into college level computer science and mathematics. And we're still just talking about how to orientate your perspective.
Anyway, I like this story because at the heart of the news story is encouragement for parents to spend more time with their kids and to impart their knowledge.
Saturday, December 22, 2018
Provide All The Information The User Needs And Nothing More
A key part of the design process is the precise definition of each and every software component in the system. This specification will become the "public" part of the component. It must include everything a user needs, such as its purpose, its name, its method of invocation, and details of how it communicates with its environment. Anything that the user does not need should be specifically excluded. In most cases, the algorithms and internal data structures used should be excluded. For if these were "visible," users might utilize this information. Subsequent enhancement or modification then becomes profoundly more difficult because any change to the component has a cascading effect on all components that use it (related to encapsulation).
Reference:
Parnas, D., "A Technique for Software Module Specification with Examples," CACM (May 1972).
Labels:
architecture,
Chicago,
coder,
design,
requirements,
software-engineering
Location:
Springfield, MO, USA
Friday, December 21, 2018
Use Efficient Algorithms
Knowledge of the theory of algorithm complexity is an absolute prerequisite for being a good designer. Given any specific problem, you could specify an infinite number of alternative algorithms to solve it. The theory of "analysis of algorithms" provides us with the knowledge of how to differentiate between algorithms that will be inherently slow (regardless of how well they are coded) and those that will be orders of magnitude faster. Dozens of excellent books exist on this subject. Every good undergraduate computer science program will offer a course on it.
Reference:
Horowitz, E. and Sahni, S., Fundamentals of Computer Algorithms, Potomac, MD: Computer Science Press, 1978.
Labels:
architecture,
coder,
software-engineering
Location:
Springfield, MO, USA
Wednesday, December 19, 2018
Howl's Moving Castle
Howl's Moving Castle by Diana Wynne Jones
My rating: 5 of 5 stars
Just as another reviewer said the movie made me want to read the book. The catch is either I don't remember the movie or the book is different enough that I can't link them in my mind. Doesn't really matter. I enjoyed the book. I think Calcifer was my favorite character. I'd like to know why he fell.
View all my reviews
My rating: 5 of 5 stars
Just as another reviewer said the movie made me want to read the book. The catch is either I don't remember the movie or the book is different enough that I can't link them in my mind. Doesn't really matter. I enjoyed the book. I think Calcifer was my favorite character. I'd like to know why he fell.
View all my reviews
Friday, December 14, 2018
Gather 'Round the Sound
Gather 'Round the Sound by Paulo Coelho
My rating: 3 of 5 stars
Good short stories that fit the season. Be warned the first story, "12345," is a bit of a tear jerker.
View all my reviews
My rating: 3 of 5 stars
Good short stories that fit the season. Be warned the first story, "12345," is a bit of a tear jerker.
View all my reviews
Subscribe to:
Posts (Atom)