Tag Archives: software

PlantUML: not just for UML. Also good for Gantt Charts, Mindmaps, etc


If you are an IT architect or specialist, you may have used PlantUML. I have and I really like it: It makes doing technical diagrams dead easy.

What I would like you to know about are non-UML capabilities of the tool. PlantUML has the capability to draw Gantt charts and Mindmaps. You can quickly write out your plans and ideas and PlantUML will convert them into the diagram you want. It’s fantastic and I highly recommend it. If you use Visual Studio Code from Microsoft, plug PlantUML into it and you can get your diagrams made that way. But the PlantUML website can also do the job.

For more on this, go to the sections on Gantt charts or mindmaps.

 

 

 

Paper Macs! Doom on Doom! Build a Voight-Kampff machine! And more (What I find interesting in tech, Sept. 2022)

Here’s 70+ links of things I have found interesting in tech in the last while. It’s a real mix this time, but still contains a good chunk on cloud, hardware and software. Some good stuff on UML, Pi and Doom as well. (Love Doom.) Dig in!

Cloud: here’s a dozen good pieces I recommend on cloud computing…

  1. I think hybrid cloud is the future of cloud computing for big orgs, and IBM does too:  IBM doubles down on hybrid cloud
  2. Not to be confused with multicloud: Multicloud Explained: A cheat sheet | TechRepublic
  3. Speaking of that, here’s 3 multicloud lessons for cloud architects | InfoWorld
  4. Relatedly, Vendors keep misusing the “cloud native” label. Customers may not care. You should care, though.
  5. Cloud Foundry used to be the future, but now it’s time for this:  Migrating off of cloud foundry.
  6. I always find these RCAs good:  Details of the Cloudflare outage on July 2 2019
  7. Speaking of outages: Heat waves take out cloud data centers
  8. Google Gsuite: now with a fee. Good luck with that, Google.
  9. Is your app resilient? Consider this four step approach to verifying the resiliency of cloud native applications
  10. If you are an AWS/Oracle user:  using aws backup and oracle rman for backup restore of oracle databases on amazon ec2.
  11. Good tips:  How to add a custom domain to GitHub Pages with Namecheap – Focalise
  12. Good argument:  Rural carriers: We need more subsidies to build 5G

Software: here’s a mix of software pieces, from how to write good bash to how to run good scrums….

  1. Is Internet Explorer dead? Nope!  IE lives! In Korea.
  2. For bootstrap noobs:  Bootstrap tutorials
  3. Fun to consider:  How is computer programming different today than 20 years ago?
  4. Helpful:  Using Loops In Bash – Earthly Blog
  5. More bash goodness:  Bash – Earthly Blog
  6. Related:  Good SED advice
  7. Some python help:  Automate Internet Life With Python | Hackaday
  8. More python:  Analyze Your Amazon Data with Python.
  9. I found this useful indeed:  Google API’s and python
  10. Load testing vs. stress testing: What are the main differences? Don’t confuse them.
  11. Good IFTTT guide:  Send me new jobs available every Monday – IFTTT
  12. Intriguing:   marcoarment/S3.php 
  13. Deploy any static site to GitHub Pages
  14. For fans of either: Visual studio and Terraform
  15. My friend Carl wrote this and it’s good:  The basics of scrum 

UML: I’ve been doing solution architecture lately, and as a result I have been using Visio and PlantUML. I love the latter and found some good links regarding it.

  1. I love PlantUML. Here’s some links on how to use it with Microsoft’s Visual Studio Code:  PlantUML – Visual Studio Marketplace.
  2. and here  UML Made Easy with PlantUML & VS Code – CodeProject
  3. PlantUML and YAML:  https://plantuml.com/yaml
  4. PlantUML and Sequence Diagrams
  5. More on  Sequence Diagram syntax and features

Hardware: here’s some good (and not so good) hardware stories….

  1. This is cool:  teenage engineering google pixel pocket operator
  2. Also cool:  paper thin retro macintosh comes with an e ink display and runs on a raspberry pi (Image on Top of this post!)
  3. Robots:  Roomba Amazon Astro and the future of home robots
  4. Macbook problems:  Macbook Air m2 slow ssd read write speeds testing benchmark 
  5. More Macbook problems:  Macbook repair program: FAIL
  6. Not great:  Starlink loses its shine
  7. A really dumb idea: the switchbot door lock
  8. Finally:  The 20 Most Influential PCs of the Past 40 Years


Pi: I still love the Raspberry Pi, and I want to do more with them soon.

  1. Nice to see this:Raspberry Pi Pico W: your $6 IoT platform – Raspberry Pi
  2. Related:  How to Connect Your Raspberry Pi Pico W to Twitter via IFTTT | Tom’s Hardware
  3. How cool is this?  LISP on Raspberry Pi
  4. Awesome: make your own VK Machine:  Cool Pi Project (image above)

Sensors: one thing I was going to do with a Pi is build a CO2 meter to check on air flow. However the sensor most used for this, the MQ-135, is not all that great. It’s a problem with cheap sensors in general: you just don’t get good results. To see what I mean, read these links:

  1. BUILD YOUR HOME CO2 METER
  2. MQ-135 Gas Sensor with Arduino Code and Circuit Diagram
  3. Measure CO2 with MQ-135 and Arduino Uno – Rob’s blog
  4. Measuring CO2 with MQ135
  5. Air Pollution Monitoring and Alert System Using Arduino and MQ135

Doom! I love stories of how people port the game DOOM onto weird devices. Stories like these….

  1. So many different ports!  Weird devices that run DOOM
  2. Cool!  Even DOOM Can Now Run DOOM! | Hackaday
  3. More on that:  Run Doom inside Doom!

Kubernetes: Still keeping up my reading on K8S. For example:

  1. You’ve written a kubernetes native application here is how openshift helps you to run develop build and deliver it securely.
  2. Benefits of Kubernetes 

Twitter: I don’t know about you, but I’ve gotten tired of the drama around Elon Musk wanting to buy twitter. However I had a recent spasm where I was reading somewhat on it. Here’s what I read:

  1. Twitter, Musk and Mudge
  2. More on Zatko
  3. Also  Zatko
  4. More on Twitter
  5. Whistleblower: Twitter misled investors FTC and underplayed spam issues. Ok, that’s enough.

Finally: 

  1. Beware Tiktok!  TikTok’s In-App Browser Includes Code That Can Monitor Your Keystrokes. These special browsers have to go.
  2. A bad use of AI in France:  taxing pool owners with hidden pools. It’s bad because the success rate is poor.
  3. Lots of good tech articles at Earthly Blog
  4. Lots of good tutorials at Earthly Blog too.
  5. How do I link my domain to GitHub Pages – Domains – Namecheap.com
  6. Mark Zuckerberg braces Meta employees for “intense period”. That’s a shame, said no on.
  7. Updated: Hardware vendor differences led to Rogers outage says Rogers CTO. More on that Rogers outage.
  8. How to:  Fine-Tune and Prune Your Phone’x Contacts List from The New York Times. Useful
  9. Also useful:  4 iPhone and Android Tricks You May Not Know About – The New York Times
  10. Good to know:  How Updates in iOS 16 and Android 13 Will Change Your Phone – The New York Times
  11. Charge your phone differently:  Phone charging.
  12. Canadian orgs struggle with  Ransomware still.
  13. Apple expands commitment to protect users from mercenary spyware. Good.
  14. Related:  84 scam apps still active on App Store’s steal over $100 million annually

Devs! Could your next online database be a spreadsheet?

If the thought of your next online database being a spreadsheet sounds ridiculous, consider this. Yes, I know, there are times when the only thing that will do the job for you is a highly scalable, highly available relational database. Certainly, there are other times when a NoSQL database with millions of records is the only way to go. That aside, there is likely many times when you need to store one table with hundreds of records or less. In that case, consider using an online spreadsheet from someone like Google.

If you write code to store data in a spreadsheet, one of the key advantages is that you and others can then interact with that data via spreadsheet software. You don’t have to run special ETL programs to get that data there. You have all the power you need. Plus the code to interact with something like Google Sheets is much simpler than the code to interact with something like AWS’s DynamoDB. I know…I have done both.

For more on this, check this out:Google Sheets API using Python : Complete 2021 Guide. It could be just the thing you need.

How to Download Apps on Your Old iPad and iPhone in 2022

If you happen to have an old iPad and you are thinking of using it, you will find this post of interest.

Like you, I have a very old iPad. It still works fine. However, one of the problems with old iPads is that Apple limits them in terms of upgrading the iPads operating system (iOS). My device cannot upgrade past iOS 9.

The problem with having an older version of iOS is this: if you try and download apps for it from the App Store, you will get message after message saying this application needs a later iOS to download. There are a few apps that you can still download directly, but not many, and not the common ones you likely use and want.

There is a work around for this problem. (I found out about it through the video below.) First, you download the apps you want on a iOS device that has a new OS. I did this on my iPhone. Then you go to your old iPad and look for apps you purchased. Voila, the app you just downloaded is there. NOW, when you try to download it, the App Store will say you don’t have the right iOS, BUT it will ask if you want to download a backlevelled version. You say YES and now you have the app running on your iPad.

This will only work for apps that have been around for a long time. So I was able to download apps like Twitter and CNN, but not Disney+. Still you can get quite a few apps downloaded that way, and suddenly mine (and soon your) iPad is much more useful.

For more on this, watch the video.

Thanks, Jishan.

 

Kubernetes and Clouds and much more (What I find interesting in tech, July 2022)


Since April, here are a ton of links I found useful while doing my work. Lots of good stuff on Kubernetes and Cloud (both IBM’s and AWS’s); some cool hardware links; some worthwhile software links. Plus other things! Check it out.

Kubernetes: plenty of good things here to explore if you are doing things with Kubernetes like I was:

Terraform: Relatedly, I was doing work with Terraform and these were useful:

IBM Cloud: one of the two clouds I have been working with. Alot of the work was Kubernetes on IBM Cloud so you’ll see some overlap:

AWS: I work on alot of cloud providers. Mostly IBM Cloud but others like AWS

Software: some of these were work related, but some are more hobby oriented.

Hardware: the pickings are few here

Finally: here are an odd assortment of things worthwhile:

What I find interesting in tech in general, Apr 2022


Well, I didn’t expect this week to be “what I find interesting in IT Week” , but here we are! I hope you have found it all useful. While the other posts were specific, these are of a general nature. From weird cool stuff to mainframes to iphones to architecture. Dig in!

IT Architecture: Here’s some tools you IT architects can use:

Cloud: some cloud related stuff:

Programming: here’s some things software and hardware folks might find interesting:

Finally: here’s some links that need to be seen without falling into a particular category:

What are NFRs (non-functional requirements) and why should you care?


If you have any role in the design of an IT system, you should care about NFRs.  As this piece (Nonfunctional requirements: A checklist – IBM Cloud Architecture Center), states:

Defining and addressing the nonfunctional requirements (NFRs) for a system are among the most important of a software architect’s responsibilities. NFRs are the system quality attributes for a system, as distinct from the functional requirements, which detail a system’s business features and capabilities.

Examples of NFRs include key concepts such as reliability, performance, scalability, and security. NFRs are cross-cutting in nature and affect multiple aspects of a system’s architecture. It’s important to articulate and address the NFRs early in the project lifecycle and to keep them under review as the system is produced. To help with that task, you can use the following checklist of key NFRs. The checklist designed to be consulted when you define and evolve a system’s architecture.

The bold text is key. NFRs describe the qualities your system should have. You have functional requirements and you have quality requirements (i.e. , NFRs). Any system design needs to address both.

The number of specified NFRs your system can have are endless. Three of the key ones found at the top of that list are:

Those three are typically covered in any system design I work on. The piece goes on with a great rundown on the various NFRs you’d expect to address in most system architectures.

Three NFRs missing from that list that I think are important and that I would ask you to consider are:

  • Accuracy
  • Maintainability (related to complexity)
  • Cost

There is often a tradeoff with accuracy and other NFRs, such as performance. To gain better performance, data will often be cached and served up even when it is out of date (i.e., inaccurate). That may be fine. But accuracy should always be taken into account and not just assumed.

Maintainability is often ignored, but it is key for the long term success of a system. Two examples of this. One, developers will sometimes not externalize values in their code; changes to the code require a fix and an outage. That is less maintainable than code with external values in a simple text file that can be changed on the fly. Two, code that is not well documented and not peer reviewed will be harder to maintain. Externalization, code reviews and documentation are examples of maintainability requirements you may have and should have for your IT system.

Cost is an important NFR because it causes tradeoffs with most other NFRs. For example, without cost considerations, stakeholders might have availability requirements that are for 99.99999….. It’s only when cost (and complexity and maintainability) become factors do we see often see availability (and other NFRs) scale back.

Finally, NFRs are not just for software architects: they are for everyone. In fact, I wish the term “non-functional requirement” was replaced with “quality requirement”. However I suspect software architects — for whom functional requirements are key — came up with that term, so we all have to live with it. When you think of NFRs, think Quality Requirements. Everyone involved in the design of an IT system wants it to have good quality. Understanding the NFRs/QRs are key to this.

 

What I learned writing web scrapers last week


I started writing web scrapers last week. If you don’t know, web scraper code can read web pages on the Internet and pull information from them.

I have to thank the Ontario Minister of Health for prompting me to do this. The Minister used to share COVID-19 information on twitter, but then chose recently to no longer do that. You can come to your own conclusions as to why she stopped. As for me, I was irritated by the move. Enough so that I decided to get the information and publish it myself.

Fortunately I had two things to start with. One, this great book: Automate the Boring Stuff with Python. There is a chapter in there on how to scrape web pages using Python and something called Beautiful Soup. Two, I had the minister’s own web site: https://covid-19.ontario.ca/. It had the data I wanted right there! I wrote a little program called covid.py to scrape the data from the page and put it all on one line of output which I share on twitter every day.

Emboldened by my success, I decided to write more code like this. The challenge is finding a web page where the data is clearly marked by some standard HTML. For example, the COVID data I wanted is associated with paragraph HTML tag and it has a class label of  covid-data-block__title and covid-data-block__data. Easy.

My next bit of code was obit.py: this program scrapes the SaltWire web site (Cape Breton Post) for obituaries listed there, and writes it out into HTML. Hey, it’s weird, but again the web pages are easy to scrape. And  it’s an easy way to read my hometown’s obits to see if any of my family or friends have died. Like the Covid data, the obit’s were associated with some html, this time it was a div statement of class sw-obit-list__item. Bingo, I had my ID to get the data.

My last bit of code was somewhat different. The web page I was scraping was on the web but instead of HTML it was a CSV file. In this case I wrote a program called icu.sh to get the latest ICU information on the province of Ontario. (I am concerned Covid is going to come roaring back and the ICUs will fill up again.) ICU.sh runs a curl command and in conjunction with the tail command gets the latest ICU data from an online CSV file. ICU.sh then calls a python program to parse that CSV data and get the ICU information I want.

I learned several lessons from writing this code. First, when it comes to scraping HTML, it’s necessary that the page is well formed and consistent. In the past I tried scraping complex web pages that were not and I failed. With the COVID data and the obituary data,  those pages were that way and I succeeded. Second, not all scraping is going to be from HTML pages: sometimes there will be CSV or other files. Be prepared to deal with the format you are given. Third, once you have the data, decide how you want to publish / present it. For the COVID and ICU data, I present them in a simple manner on twitter. Just the facts, but facts I want to share. For the obit data, that is just fun and for myself. For that, I spit it into a temporary HTML file and open it in a browser to review.

If you want to see the code I wrote, you can go to my repo in Github. Feel free to fork the code and make something of your own. If you want to see some data you might want to play with, Toronto has an open data site, here. Good luck!

 

Some good links on how to learn Python

A friend asked me for some help when it comes to learning Python. I put together this list for him, but it’s good for anyone wanting to learn the computer language.

  1. Why Learn Python
  2. Automate the boring stuff with python. A great book!
  3. Learn python in 24 hours. Another book. Also great.
  4. Learn python in 10 minutes
  5. Good doc on python
  6. Learn Python the hard way
  7. How to make a web app using Flask and Python
  8. How to build a twitter app in python
  9. Become a More Efficient Python Programmer

There are so many great resources on the Internet concerning Python. I could easily triple the size of this list. Start with these: you’ll find the rest soon enough.

(Image from Free Code Camp, which also has good links worth reviewing.)

What programming language should you learn? (2022 edition)

The best programming languages to learn in 2022, according to TechRepublic are these:

It’s interesting to see how things have changed. Back in 2015 when I wrote about this, Java was 1st and Python was in 4th. Javascript was 8th! I am not surprised by this.

Java and the C languages will always be good to know. But if you want to be marketable, learn some Python and Javascript.

In praise of the the post-it note (and Clive Thompson)

post it notes
First up, the post it note. Clive has done a great job of taking something we likely all take for granted and making us think about it in a way that we can really appreciate its value. He does it here specifically with the Post-It note: 13 Ways Of Looking At A Post-It Note | by Clive Thompson | Nov, 2021 | Medium

He’s been doing it for many other topics too. Here’s just one example: Tiny Books an Incredibly Long Piano and Why Are Boss Fights So Damn Hard? .

Basically what I am saying is you should subscribe to his newsletter. He’s been on fire with it recently. He says it is a good way to procrastinate. I say it is a good way to learn about all sorts of interesting aspects of the world.

Write down on a post-it note: Subscribe to Clive’s newsletter. Better yet, just go off and do it. You’ll be glad you did.

(Photo by Kelly Sikkema on Unsplash )

If you are writing a bash script to call a curl command and you want to pass variable values to it, read this…

CodingImage
If you are writing a bash script to call a curl command and you want to pass variable values to it, you may find a hard time determining how to go about it. I did!! I consulting with lots of pages, and nothing seemed to tell me what I want.

Here’s what I eventually did.

Take this example. I am using curl to call the sendgrid API, as you can see below. (I don’t have all the variables, but they were all strings like THESUBJECT and THECONTENT.).

The trick is in the use of single and double quotes. For the variables, they are in double quotes. But notice the use of single and double quotes in the curl command:


TOYOU="noone@gmail.com"
THESUBJECT="once again!"
THECONTENT="Looks good!"
curl --request POST --url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer '$AUTH_TOKEN \
-H 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": '\"$TOYOU\"'}]}],"from": {"email": '\"$FROMME\"'}, "subject": '\""$THESUBJECT"\"', "content": [{"type": "text/plain", "value": '\""$THECONTENT"\"' }]}'

Let’s look at the variables in that curl command.

$AUTH_TOKEN has no quotes around it. In fact, it is up against a single quote on its left. That single quote ends the string Authorization: Bearer and let’s the script fill in the value of $AUTH_TOKEN.

Now look at $TOYOU AND $FROMME. Both of those variables have no blanks in them. So there is a single quote-slash-double quote on the left and a slash-double quote-single quote to the right.

that is different than $THESUBJECT and $THECONTENT. Those strings have blanks in them. For them, there is a single quote-slash-double quote-double quote to the left of them and a double quote-slash-double quote-single quote to the right.

It’s crazy but true. Good luck with it!

(Photo by Shahadat Rahman on Unsplash )

Five digital tools to help you with Kanban (plus one analog tool)

Last week I extolled the virtues of Kanban. If you are looking to grab some tech to run yours from, here are 5 open-source kanban boards to help you get and stay on task from TechRepublic. I’ve used one of them (Kanboard, seen above) and liked it. Check them out and see which one works best for you.

If analog is more your thing, consider this tool featured on Yanko design:

You can easily work this into a Kanban type tracker. Plus it looks cool.

For more on it, see it here.

If you use Chrome as your regular browser, read this and make it better

If you use Chrome as your main browser, you owe it to yourself to read this:  11 of the Best Free Extensions for Google Chrome.

I’ve used a number of them and continue to use Momentum and Grammarly. They make it a better tool.

P.S. And speaking of making tools work better, if you want to have better search results from Google in Chrome, read this: 20 Google Search Tips to Use Google More Efficiently

It’s 2021. Why are you still using spreadsheets to manage your project plans? Use this instead

It’s 2021 and I still see people managing projects using Excel spreadsheets. Sure you CAN do it, but you can do better. I am a fan of OpenProj and I use it often. If that is not for you, consider this online version: Build Gantt Charts Online.

What I like about these tools is you can tie tasks together which have dependencies (as shown in the image). This is very helpful and something not easy to do with spreadsheets.

Speadsheets are great for many things: for managing projects, use a better tool.

What I find interesting in tech, August 2021

Here’s a cornucopia of things I have found interesting in tech in the last month. As usual, lots of cloud, some Kubernetes, DevOps and software of course, as well as IOT. Grab a drink and read!

Cloud: 

Devops:

Software:

Kubernetes:

Security:

IOT:

Cool stuff:

General

(Photo by Sam Albury on Unsplash )

What I found interesting in tech, July 2021

Here’s 59 links (!) of things I have found interesting in tech in the last while.

It ‘s heavily skewed towards Kubernetes because that’s mostly what I have been involved with. Some stuff on Helm, since I was working on a tricky situation with Helm charts. There’s some docker and Open Shift of course, since it’s related. There’s a few general pieces on cloud. And finally at the end there’s links to a bunch of worthwhile repos.

Almost all of these links are self explanatory. The ones that aren’t…well…few if anyone but me reads these posts anyway. 🙂 Just treat it like a collection of potentially good resources.

Raspberry Pi / Pico: I have been interested in doing work with the Raspberry Pi Pico, so here are some links I liked:
Raspberry Pi Pico: Programming with the Affordable Microcontroller and Getting started with Raspberry Pi Pico – Control LED brightness with PWM | Raspberry Pi Projects and How to Use an OLED Display With Raspberry Pi Pico | Tom’s Hardware.

I am interested in getting bluetooth working with my Raspberry Pi Pico, so I am reading things like Bluetooth serial communication with Mac, JY-MCU Bluetooth and Arduino | Cy-View and How to: Setup a bluetooth connection between Arduino and a PC/Mac | ./notes and Cheap BlueTooth Buttons and Linux – Terence Eden’s Blog

Not a Pico, but I am also interested in doing work with the ATTTiny 85 chip, so I saved this: How to Program an ATtiny 85 Digispark : 8 Steps – Instructables

Here’s two projects I am interested in. Using a Pico to press a key on the Mac using bluetooth: How to run an AppleScript with a keyboard shortcut on macOS while here is a fun project – Making an Email-Powered E-Paper Picture Frame

Here’s some cool MIDI projects with a Pico: this one, NEW GUIDE: Modal MIDI Keyboard @adafruit @johnedgarpark #adafruit #midi « Adafruit Industries – Makers, hackers, artists, designers and engineers, this Code the Modal MIDI Controller | Modal MIDI Keyboard | Adafruit Learning System, and this Build smart, custom mechanical keyboards for MIDI – or really tiny Ableton Live control – CDM Create Digital Music

Kubernetes/OpenShift / Containers: I’ve been doing more and more work on K8S and OpenShift and found these useful…

Cloud: some advanced cloud knowledge here:

Software Development: here’s some random dev links:

 

 

General: finally here are some interesting links on IT in general:

(Image: via NYT piece on mesh)

In praise of spreadsheets (and some new ways for you to use them)

Excel
Let’s face it: there is no better tool than Excel/spreadsheet software when it comes to managing information. New tools come out all the time, and yet people still depend on this workhorse software to get the job done.

At least it is for me. If that’s you too, then you might be interested in what they have over at Vertex42.com, including these three tools:

  1. Free Gantt Chart Template for Excel
  2. Project Timeline Template for Excel
  3. Savings Snowball Calculator

Of course Google Sheets are also great. Whatever you use, check out that site for some good tools and ideas.

On Microsoft Frontpage: a history not just of a product, but the early days of the web

Microsoft Front Page

I found this piece on Microsoft FrontPage fascinating.  I remember when it first came out: it was a great tool if you wanted to develop for the web. While serious people went with Adobe products, FrontPage made developing web page easier for the rest of us. If you want to learn about the early days of the Web, or if you want to see what well designed software looks like (even if it seems very clunky with that Windows XP interfact), I recommend you read it.

You can actually still download it, here. Now should you? No. Read the sections of the article subtitled “Bad” and “Ugly” to see why.

 

Small Victories, or how to build your own website very simply

You need to build a web site? Consider Small Victories. As they say:

Small Victories takes files in a Dropbox folder and turns them into a website.

Best of all, they can help you build a variety of different sites, from a blog to a home page to e-commerce.

The site explains it very well, so visit Small Victories and see how it’s done.

Found via Swiss Miss. Thanks, Tina!

Quote

What is the equivalent of “Hello, World” for github?


This: Hello World · GitHub Guides.

If you wanted to learn how to use GitHub but felt unsure or anxious, this is a nice little tutorial on how to do it. You don’t need additional tools or deep skills or even be a programmer.

Well worth a visit.

(Image by Richy Great)

Quote

Remember Blackberry?

You don’t see too many BlackBerry mobile phones any more. But that doesn’t mean the end of BlackBerry the company. As you can see from this, they are alive and well making technology for automakers: BlackBerry QNX now in 175 million cars | IT Business

Here’s some key facts:

BlackBerry says its QNX suite is now in 175 million cars, up from the 150 million it announced at CES this year.

The BlackBerry QNX for automotive is a suite of embedded software solutions, including operating systems and middleware, as well as a host of security solutions that protects the vehicle’s systems from cybersecurity attacks. Vehicle manufacturers that don’t want to build their own secure operating systems can use BlackBerry’s QNX operating systems and frameworks to build their ADAS systems.

 

Quote

Tools to help you deal with anxiety, during a pandemic, or otherwise

I think this is a terrible headline, which is too bad, because there is much to take away from this piece:  How to stay sane when the world’s going mad | MIT Technology Review

There are tools and advice in there, including this:

  • Notice when you are worrying, and be kind and compassionate to yourself. This is a difficult time; it makes sense that you might be more anxious.
  • Focus on what’s in your control. Work out what is a hypothetical worry (you cannot do anything about it) and what is a real problem (needs a solution now).
  • Refocus on the present moment. Focus on your breath, or on using your five senses.
  • Engage in activities that you find meaningful and enjoyable. That could include music, walking, reading, baths, household tasks, or calls with friends and family.
  • Notice and limit your worry triggers. If the news is making you anxious, limit your consumption.
  • Practice gratitude. List the things you were grateful for that day: for example, “The sun was shining.”
  • Keep a routine, and stay mentally and physically active.

 

Quote

You may be working from home for awhile. Here are some tools to help you stay focused

This is actually a great looking set of tools to help you work from home: Eight apps to help you stay focused when working from home – The Globe and Mail

Normally when I see such a list — and there have been many — I see the same tools over and over again. Not with this list. Moreover, they are a diverse set of tools to help with various difficulties when you work from home.

Have a look. I’d be surprised if there isn’t one there you could use.

Quote

On specific Agile (software development) traps

There’s much positive to be said about the benefits of Agile software development, and the shift of software development teams is one sign that many feel this way.

However, I think there are some limits to Agile, and this leads teams to fall into certain traps over and over. Indeed, the Wikipedia page highlights a common criticism of Agile, namely:

Lack of overall product design
A goal of agile software development is to focus more on producing working software and less on documentation. This is in contrast to waterfall models where the process is often highly controlled and minor changes to the system require significant revision of supporting documentation. However, this does not justify completely doing without any analysis or design at all. Failure to pay attention to design can cause a team to proceed rapidly at first but then to have significant rework required as they attempt to scale up the system. One of the key features of agile software development is that it is iterative. When done correctly design emerges as the system is developed and commonalities and opportunities for re-use are discovered.

Now, it’s not the case that teams either do design or not. But I have seen that there are a number of specific traps bigger that Agile teams fall into that arise from lack of design. These traps arise from making tactical or limited decisions outside of a larger framework or structure, which isn’t surprising since Agile followers are guided by the principles that the “best architectures, requirements, and designs emerge from self-organizing teams” and “working software is the primary measure of progress”. Unfortunately what I’ve seen that lead to is:

  • Poor middleware/database system decisions: with this trap, you get teams making a decision on deploying a specific middleware package or database system that will support the software development they are doing. However, while that may be great for the Dev, it may not be great for the Ops. If you have enough teams making tactical decisions, you may end up with a more complex system than is necessary and greater technical debt that you want. Once you get enough data into your database systems, trying to reverse the decision may result not result not only in new development and testing, but a small (or not so small) migration project as well.
  • Poor infrastructure decisions: likewise, with this Agile trap I have seen teams using IaaS pick different images to deploy their software onto. Like the database problem, developers may choose one operating system (e.g. Windows) over another (e.g. Debian) because they are comfortable with the former, even if the production environment is more of the latter. The result can be your organization ending up with multiple VMs with many different operating systems to support and thereby increasing the operational costs of the system.
  • Poor application framework decisions: I see less of this one, although it can happen where teams pick an assortment of application frameworks to use in creating their software, and as with middleware and infrastructure, this will drive up the support effort down the road.

Given these traps, I think the way to avoid them is to inject some specific design phases into the overall software development lifecycle. One way to do that is to revisit a software development lifecycle (see diagram below) used by practitioners at IBM and documented in places like this IBM redbook. It has a waterfall quality about it, but it doesn’t have to be limited to waterfall type projects. It can be highly iterative.

The lifecycle process is shown here (taken from the redbook):

 

GSMethod

The part of the lifecycle in the large box is iterative and not all that different from an agile sprint.  But here you take time to explicitly make design / architecture decisions before building  software. You continue to iterate while making important design decisions before building.

Now, before you start your iterative software development lifecycle, you should need to  make specific architectural decisions. You should make these specific decisions in the solution outline and macro design phase. For smaller teams, these two phases may blend into one. But it is here in solution outline and macro design where you make decisions that are fundamental to the overall solution.

For example, in solution outline you could make overall architectural decisions about the application architecture, the choice of infrastructure technology, what application frameworks are the target for the team. These overall architectural decisions guide the dev, test and ops teams in the future. You may also decide to park some of these decisions in order to do further discovery.  Macro design could be next, where each of the dev teams make certain design decisions about their technology choices before they proceed with their iterations. As they are building and deploying code, they can run into issues where they need to make further design decisions, either due to problems that arise or technology choices that have to finally be made: and this is where the micro design phase is useful.  Micro design decisions could be quickly made, or they may require spikes and proof of concepts before proceeding. Or there could be no decisions to be made at all.  The main thing is more design checkpoints are built into the development lifecycle, which can result in less complexity, less maintainability costs, and less technical debt down the road. What you lose in velocity you can make up in overall lower TCO (total cost of ownership).

There is a risks to this type of approach as well. For example, if the project gets hung up with trying to make design decisions instead of gather requirements and making working software. The key stakeholders need to be aware of this and push on the design teams to prevent that from happening. If anything, it can help the key stakeholders better understand the risks before getting too far down the road in terms of developing software. Overall I think the risks are worth it if it helps you avoid these common agile traps.

Quote

Truly great MacOS apps for working remotely

I’m often disappointed by lists of software that supposedly help me work better. This is not one of those lists. I think the tools here are really great, and anyone with a Mac that works remotely should definitely check out this:  These Are the 8 Best MacOS Apps for Working Remotely | Inc.com

Quote

Do you know someone who wants to learn how to code? (Maybe it is you!)

Then this is a good page for them to go to: How I Learned How To Code Using Free Resources | Home | Bri Limitless. 

There’s plenty of good links to information, and they are all free. I can vouch for a number of them, such as Codecademy and Coursera.

One problem people run into is: why should I learn to code? One obvious answer is to learn a set of skills to help them gain employment. Two other reasons I have:

  1. build a website to promote yourself or any future business you might have.
  2. automate things you do on your computer

For #1, being able to build a website is a great way to promote yourself and show yourself to the world. As for #2, that’s the main reason I still keep coding. There’s lots of information I want to process, personally and professionally, and coding is the best way to do that.

Regardless of your reason, if you want to learn to code, check out Bri Limitless’s web page.

Quote

MindMup 2: a good web based mindmapping too

I’m a fan of mindmapping tools in general. One I’ve been using and enjoying lately is MindMup 2. 

Two things I like about it:

  1. It’s simple to modify your mindmaps on the go. You don’t need to do much to add or modify your map.
  2. It’s also simple to export your mindmap into a number of different formats. If you occasionally use mindmaps or you want to start with a mindmap to generate ideas but then you want to do the majority of the work in Word or some other tool, this is a good feature.

Mindmup_2 is a good tool. Go map your thoughts.

Quote

Isn’t machine learning (ML) and Artificial Intelligence (AI) the same thing?


Nope. And this piece, Machine Learning Vs. Artificial Intelligence: How Are They Different?, does a nice job of reviewing them at a non-technical level. At the end, you should see the differences.

(The image, via g2crowd.com, also shows this nicely).

You need good work tools to be your best at work. Here’s 11 for you to consider


We all get in ruts where we use the same tools every day for our office work. When that happens, what we need is someone to come along with a new list of tools and what makes them great.

Here is such a list. I didn’t create it, but I have used 3 of the 11 tools here and I can say they are key to making me more productive every day. I plan to use the rest of them too, based on the description of them.

Sure, you can do fine with Microsoft Office tools. This list will help you do better: 11 Most Used Tools & Apps Essential to my Work – DESK Magazine

(Image via pexels.com)

34 good links on AI, ML, and robots (some taking jobs, some not)

If you are looking to build AI tech, or just learn about it, then you will find these interesting:

  1. Artificial intelligence pioneer says we need to start over – Axios – if Hinton says it, it is worth taking note
  2. Robots Will Take Fast-Food Jobs, But Not Because of Minimum Wage Hikes | Inverse – true. Economists need to stop making such a strong link here.
  3. Artificial Intelligence 101: How to Get Started | HackerEarth Blog – a good 101 piece
  4. Deep Learning Machine Teaches Itself Chess in 72 Hours, Plays at International Master Level – MIT Technology Review – the ability of tech to learn is accelerating.
  5. Now AI Machines Are Learning to Understand Stories – MIT Technology Review – and not just accelerating, but getting deeper.
  6. Robots are coming for your job. That might not be bad news – good alternative insight from Laurie Penny.
  7. Pocket: Physicists Unleash AI to Devise Unthinkable Experiments – not surprisingly, a smart use of AI
  8. AI’s dueling definitions – O’Reilly Media – this highlights one of the problems with AI, and that it is it is a suitcase word (or term) and people fill it with what they want to fill it with
  9. A Neural Network Playground – a very nice tool to start working with AI
  10. Foxconn replaces ‘60,000 factory workers with robots’ – BBC News – there is no doubt in places like Foxconn, robots are taking jobs.
  11. 7 Steps to Mastering Machine Learning With Python – don’t be put off by this site’s design: there is good stuff here
  12. How Amazon Triggered a Robot Arms Race – Bloomberg – Amazon made a smart move with that acquisition and it is paying off
  13. When Police Use Robots to Kill People – Bloomberg this is a real moral quandary and I am certain the police aren’t the only people to be deciding on it. See also: A conversation on the ethics of Dallas police’s bomb robot – The Verge
  14. How to build and run your first deep learning network – O’Reilly Media – more good stuff on ML/DL/AI
  15. This expert thinks robots aren’t going to destroy many jobs. And that’s a problem. | The new new economy – another alternative take on robots and jobs
  16. Neural Evolution – Building a natural selection process with AI – more tutorials
  17. Uber Parking Lot Patrolled By Security Robot | Popular Science – not too long after this, one of these robots drowned in a pool in a mall. Technology: it’s not easy 🙂
  18. A Robot That Harms: When Machines Make Life Or Death Decisions : All Tech Considered : NPR – this is kinda dumb, but worth a quick read.
  19. Mathematics of Machine Learning | Mathematics | MIT OpenCourseWare – if you have the math skills, this looks promising
  20. Small Prolog | Managing organized complexity – I will always remain an AI/Prolog fan, so I am including this link.
  21. TensorKart: self-driving MarioKart with TensorFlow – a very cool application
  22. AI Software Learns to Make AI Software – MIT Technology Review – there is less here than it appears, but still worth reviewing
  23. How to Beat the Robots – The New York Times – meh. I think people need to learn to work with the technology, not try to defeat it. If you disagree, read this.
  24. People want to know: Why are there no good bots? – bot makers, take note.
  25. Noahpinion: Robuts takin’ jerbs
  26. globalinequality: Robotics or fascination with anthropomorphism – everyone is writing about robots and jobs, it seems.
  27. Valohai – more ML tools
  28. Seth’s Blog: 23 things artificially intelligent computers can do better/faster/cheaper than you can – like I said, everyone is writing about AI. Even Seth Godin.
  29. The Six Main Stories, As Identified by a Computer – The Atlantic – again, not a big deal, but interesting.
  30. A poet does TensorFlow – O’Reilly Media – artists will always experiment with new mediums
  31. How to train your own Object Detector with TensorFlow’s Object Detector API – more good tooling.
  32. Rise of the machines – the best – by far! – non-technical piece I have read about AI and robots.
  33. We Trained A Computer To Search For Hidden Spy Planes. This Is What It Found. – I was super impressed what Buzzfeed did here.
  34. The Best Machine Learning Resources – Machine Learning for Humans – Medium – tons of good resources here.

Installing SonarQube on CentOS/RHEL

The following webpage has detailed instructions for installing and configuring SonarQube on a RHEL/CentOS 7 Linux server (real or virtual) and it was one of the best guides I’ve seen (and I’ve reviewed half a dozen):

The webpage  outlines how to update your Linux server, how to install MySQL (as a data repository) on it, and how to then install SonarQube software on the server.

Some things to note. First, this procedures has you using wget to get v6.0 of SonarQube:

Check out the page https://www.sonarqube.org/downloads/ and see the latest version of SonarQube (e.g. 6.4) and replace “sonarqube-6.0.zip” with the latest version (e.g. “sonarqub-6.4.zip”.)

One important thing to note: this procedure creates a userid and database called sonarqube.

Later in the process, the changes made to /opt/sonarqube/conf/sonar.properties needs to match this:

sonar.jdbc.username=sonarqube                                   sonar.jdbc.password=password
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

If the userid, password and database you created in MySQL do not match what it is the sonar.properties file, you will see cannot connect to the database errors in the /opt/sonarqube/logs/web.log file and SonarQube will not come up.

Once you enter: sudo ./sonar.sh start

Get the IP address of the SonarQube server and then go to a browser and enter:

If you are worried about the WannaCrypt ransomware (and if you are a Windows user, you should be), then…

…Then you want to go here and download and install the appropriate software for your Windows system: Security Essentials Download.

According to this, Microsoft has upgraded it’s security software to prevent similar attacks. That’s good. What’s not good is that you can be certain there will be a wave of copycat attacks coming. Get the software and install it today.

It’s not because most developers are white that AI has hard time with non-white faces. It’s this….

An example of a neural net topology
This piece, Most engineers are white — and so are the faces they use to train software – Recode, implies that AI software doesn’t do a good job recognizing non-white faces because most engineers (i.e. software developers) are white. I’d argue that the AI does a poor job because of this: the developers aren’t very good.

Good software developers, in particular the lead developers, take an active role in ensuring they have good test data. The success of their software when it goes live is dependent on it. Anyone using training data  (i.e. using test data) in AI projects that is not using a broad set of faces is doing a poor job. Period. Regardless of whether or not they are white.

If the AI is supposed to do something (i.e. recognize all faces) and it does not, then the AI sucks. Don’t blame it on anything but technical abilities.

 

 

My mixed bag of IT links for December

Like previous collections of IT links, this collection reflects things I am interested in or found useful recently:

  1. If you want to get started using APIs, I recommend this: Most Popular APIs Used at Hackathons | ProgrammableWeb
  2. If you want to build that web site, consider Using Twitter Bootstrap with Node.js, Express and Jade – Andrea Grandi, and this Building a Website from Scratch with ExpressJS and Bootstrap | Codementor. Also Mastering MEAN: Introducing the MEAN stack and Bluemix Mobile, Part 1: Creating a Store Catalog application – Bluemix Blog
  3. Or develop a mobile app like this: Create Swift mobile apps with IBM Watson services – developerWorks Courses
  4. I am a fan of Bluemix and Eclipse. This article ties them nicely together: IBM Bluemix – Eclipse Package Download – Neon release.
  5. I am also a fan of IoT these days. For fellow IoT fans, these links are good: Intro to Hardware Hacking on the Arduino — Julia H Grace and $10 DIY Wifi Smart Button | SimpleIOThings.
  6. Speaking of IoT, if you have been doing some work with Arduinos, you might be interested in the ESP8266. Some good info on it here ESP8266 Thing Hookup Guide – learn.sparkfun.com and a good thing to do with it, here: SimpleIOThings | Simple Do-It-Yourself Internet-of-Things Projects
  7. More good links related to software and application development work here Migrate an app from Heroku to Bluemix and here A Concise Introduction To Prolog, plus Building without an Ounce of Code – Part 2 – Apps Without Code Blog and this Turning a form element into JSON and submiting it via jQuery – Developer Drive
  8. Some interesting links pertaining to Minecraft: Can Minecraft teach kids how to code? – Safari Blog and Minecraft and Bluemix, Part 1: Running Minecraft servers within Docker.
  9. There’s lots of talk about AI these days, the  Economist explains why artificial intelligence is enjoying a renaissance
  10. If you are interesting in working in IT, you might like this: How to Get a Job In Deep Learning or this: An Unconventional Guide for Getting a Software Engineering Job — Julia H Grace
  11. Or maybe you want start a start-up. If so, check this out: A Free Course from Y Combinator Taught at Stanford | Open Culture
  12. Finally, here are just a number of interesting but mostly unrelated links:
    1. IBM Blockchain 101: Quick-start guide for developers
    2. Building three-tier architectures with security groups | AWS Blog
    3. Performance Tuning Apache and MySQL for Drupal
    4. How to secure an Ubuntu 16.04 LTS server 
    5. Clean Your System and Free Disk Space | BleachBit
    6. Use an iPad as a Raspberry Pi display — Kano OS – YouTube
    7. (Software iSCSI) Configuring SAN boot on Red Hat Enterprise Linux 5 or 6 series

 

Two additions to my github repositories: one for IBM Watson, one for monitoring Linux systems

I’ve recently added two repos to my github account:

The first one is some proof of concept code I wrote to demonstrate how to work with IBM Watson’s Tradeoff Analytics service using node.js

The second one is some sample code I have had for some time that does simple server monitoring of a Linux server.

There is no intellectual property involved in these repos: it is simple code based on documented code samples found in many places on the web.

For more details, see my Github landing page, here: blm849 (Bernie Michalik)

Thoughts on using JMeter to do web performance testing

There are many tools to use for web performance testing, but if you want a good tool that does the job, I recommend Jmeter. The good and bad thing about JMeter is that there are alot of different options and features. To make it simpler for you, the good folks at Digital Ocean have a good tutorial on getting it set up, here: How To Use Apache JMeter To Perform Load Testing on a Web Server | DigitalOcean. While this is fine for testing one page, there are test scenarios where you want to have the user perform multiple steps (e.g. go to the home page, login to their account, check their account balance, then logout). If that is the case for you, too, then you want to read this next: How To Use JMeter To Record Test Scenarios | DigitalOcean (I used Firefox for this: if you are going to use JMeter to develop your performance test cases, then download Firefox too.) For any performance testing that follows a sequence, you really want to use the recording feature of JMeter.

Some other thoughts….

On my thread group, I added the following listeners:

  • Response time graph
  • Graph results
  • Aggregate report
  • View results tree (with scroll automatically on)

I also login to the web server and tail -f  the access log (and sometimes the error log).

I do all this because it is easy to run have a lot of errors when you first (and even later) run your test. For example, if you are testing a sequence, you might see good performance, but you might also see 404s in the access log, or you might see other anomalies in the aggregate report (e.g. good response 90% of the time, but bad response on average). Having more data is better and it insures you don’t have false positives (e.g., you think performance is good, but it really isn’t because the application is failing).

As soon as your developers have some code in place, have someone run Jmeter against it. Don’t wait until towards the end of the project. Jmeter is free and anyone can use it.

Back up your test plans often. It is easy to change your test plan, have it go from a successful one to an unsuccessful one because of the change, and then find it hard to go back because you changed a number of variables.

For your test plan, have multiple thread groups. This will allow you to test different test scenarios for different test groups. You can have different test plans too: it’s up to you how you manage it. For example, I recorded a long sequence for one test group, then I copied it and made a simple test group with less steps by removing them.

How to stop Whatsapp from sharing information with Facebook 

Instructions are here as to how to stop Whatsapp from sharing information with Facebook.

Facebook owns Whatsapp. I expect this simple opt out may not be so simple in the months and years to come. You may have to make a harder choice then when it comes to privacy on Whatsapp. In the meantime, you can follow those instructions to maintain the separation between your Whatsapp data and your Facebook data.

A sign of the times: Adblock blocks Facebook. Facebook circumvents Adblock. Now Adblock circumvents Facebook.

No doubt this game of cat and mouse will go on for some time. For Adblock to prosper, they need to block ads on Facebook. Likewise, for Facebook there is too much money at stake to allow Adblock to block their ads.  For details on this, see: Adblock Plus and (a little) more: FB reblock: ad-blocking community finds workaround to Facebook

One thing for sure: developers from both sides will be pushing out changes on a regular basis as this battle heats up.

Of course, behind such tactics, the deeper questions are left unresolved, questions around business models and the viability of services without access to advertising revenue.

Developers and IT people: you need to have more than a good resume/CV

If you are a software developer or someone working in IT, you need to consider having more than a good resume or CV. You should consider having:

  1. an up to date profile in LinkedIn
  2. a professional web site (at least a one pager). It could be a blog, or an about.me page…something that provides information about yourself in a summary form.
  3. some repositories on github showing your work or an example of what you can do.

If you use github.io to host your professional web site, you get to cross off #2 and #3 with one effort.

I was reminded of this when I went to check out this page: DevProgress Tech Volunteer Questionnaire. You can see them asking for this information. It makes sense: if you are looking to hire a developer, it would be great to see not just what people are saying about them on LinkedIn, but what their code looks like too.

For some employees, putting code on github may not be an option. In that case focus on the first two and have a page somewhere on the web that discusses why you can’t host code there.