Tag Archives: software

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.

 

A primer for Pokemon Go

It’s only been out for a very short time, but already there’s at least one primer for it, here: Ten Things I Wish I Knew When I Started ‘Pokémon GO’ – Forbes. If you want to leapfrog others playing it, read this and then get going.

More thoughts on Waze

I have thought a lot about Waze since I started using it. Without a doubt, it has improved my life substantially. Here are some other thoughts I had as I used it.

  1. Waze is an example of how software will eat the world. In this case, the world of gPS devices. Waze is a GPS on steroids. Not only will Waze do all the things that a GPS will do, but it does so much more, as you can see from this other Waze post I wrote. If you have a GPS, after you use Waze for a bit, you’ll likely stop using it.
  2. Waze will change the way cities work. Cities are inefficient when it comes to transportation. Our work habits contribute to that, in that so many people commute at the same time, in the same direction, on the same routes, each work day. Waze and other new forms of adding intelligence to commuting will shape our work habits over time. Drivers being able to take advantage of unbusy streets to reduce congestion on major thoroughfares is just the start. City planners could work with Waze to better understand travel patterns and travel behaviour and incorporate changes into the city  so that traffic flows better. It’s not that city planners don’t have such data, it’s that Waze likely has more data and better data than they currently have.
  3. Waze is a great example of how A.I. could work. I have no idea how much A.I. is built into Waze. It could be none, it could be alot. It does make intelligent recommendations to me, and that is all I care about. How it makes those intelligent recommendations is a black box. Developers of A.I. technologies should look at Waze as an example of how best to deploy A.I. Those A.I. developers should look at how best A.I. can solve a problem for the user and spend less time trying to make the A.I. seem human or overly intelligent. People don’t care about that. They care about practical applications of A.I. that make their lives better. Waze does that.

Why I love Waze. 13 good reasons why it is my favourite app


Inspired, in a way, by this article, Why I hate Waze in LA Times, I’d like to share some of the ways that Waze has made my life a lot better. 13 ways, in fact. There are more, but if this doesn’t convince drivers to use Waze, I don’t know what will.

  1. It saves me a lot of time: I used to take my son to hockey practice every week on a trip that took me 50 minutes. After talking to some other parents, I downloaded Waze. The result: my hockey commute went from 50 minutes to 25 minutes! Before Waze, I was stuck taking the major roads that were severely congested because I didn’t know what else to do. Waze recommended roads close to the roads I was on but that had no traffic problems. Over one year, I have saved hours of unnecessary commuting and saved on gas as well.
  2. It gets me to places on time: not only will Waze give you a fast route to travel, but it will tell you to the minute when you will get there. At first I didn’t think this was possible, but I was and continue to be amazed at how accurate it is. Now, before I am going somewhere, I will put the destination in Waze and know when I will arrive. No more being too early or late.
  3. It gives me options on how to get to a place: What I love about Waze is that it gives me 3 different routes to get to a place. It always recommends the fastest, but I like having the options. Sometimes it will recommend a road or a highway and I will think: I prefer to spend a bit more time and go a more scenic route.
  4. It gives me better times to travel if that is an option: Waze will also show me how long over the course of a day the route I want will take.  a 40 minute route at 4 p.m. might be a 24 minute route at 7:30 p.m. If you can shift your travel time, you can save yourself some time on the commute, according to Waze. This is a great feature.
  5. It has made me a calmer driver: I used to get anxious when I would get stuck in traffic. I’d think: God! I am never getting out of this jam! With Waze, not only do I know how long it will take to get to a place, traffic jam or not, but Waze will tell me things like: you will be stuck in traffic for 6 minutes. Now I feel much more in control of my commutes. Plus, I always know the route I am going is the best way to get to a place.
  6. It’s made me a more confident driver: one thing I didn’t like about Waze at first but now I do is that it often tells you to make left turns. Sometimes on busy streets. I used to avoid this on my own and I would go and turn at an intersection with lights. However, left hand turns save time, and the more I do them, even on busy streets, the more I realize they are no big deal. You just have to be patient and wait for an opening in traffic. It will come, often in a few seconds.
  7. It has helped me know the city better: when traffic is busy, Waze will have you going down streets you might normally skip. As I have done this, I have been amazed at how many new streets in the city I have discovered. Now, even when I don’t use Waze, I know about these streets and that knowledge helps me get around my city better.
  8. It helps you with cities you have no clue in: if you are driving into a city that you don’t know well, Waze is essential. I was driving into Montreal which has busy streets that go all different ways. With Waze I could just type in my hotel’s name and it gave me the route to get there. I had done this before Waze and it was a nightmare for me. With Waze it was easy.
  9. You don’t need to know addresses: that’s the other great thing about Waze. You can type in a name of a place and it will do a search and give you a list you can choose from. It’s perfect for when you are out with people and they say: let’s meet up at restaurant XYZ. You can enter that in Waze and off you go.
  10. It is the perfect navigator for solo drivers: I used to write down maps to help me get to places. It was ok, but not easy. It was especially difficult in new cities or driving on highways. Waze is constantly telling you how long you have to travel on a road, when you can expect to turn, and then telling you exactly where to turn. And if you miss a turn, it will recalibrate on the fly and tell you have to get back to where you need to go.
  11. It is great at night: I travel to a lot of rinks at night in the winter. Many of them are down small roads and poorly marked. I would have a heck of a time without Waze. With Waze, it is dead simple to get to the rinks. Can’t see a road sign? Can’t see the rink set far away frm the street? No problem: just follow the directions that Waze is giving you and you’ll get there.
  12. It gives you lots of time to turn: with Waze, you get lots of warning about when you have to turn. It will say: “in 1.2 kilometers, turn left….in 300 kilometers turn left….turn left at street X. ” You never have to worry about being told to turn left at the last minute.
  13. You can be flexible: Waze will suggest the fastest route. However, sometimes I will be tired or not in a rush and I will stick to a road I prefer driving down. Waze will quickly recalibrate and make additional recommendations, right to the point I arrive at my destination.

What drives A.I. development? Better data

This article, Datasets Over Algorithms — Space Machine, makes a good point, namely

…perhaps many major AI breakthroughs have actually been constrained by the availability of high-quality training datasets, and not by algorithmic advances.

Looking at this chart they provide illustrates the point:

I’d argue that it isn’t solely datasets that drive A.I. breakthroughs. Better CPUs, improved storage technology, and of course new ideas can also propel A.I. forward. But if you ask me now, I think A.I. in the future will need better data to make big advances.

Why Python programs often have this: `if __name__ == “__main__”:`

If you were wondering why Python programs often have this: `if __name__ == “__main__”:` and then a call to a function, a good explanation is here.

In short, if your program is used as input to other programs, then you want to have that snippet of code in them. If your programs are standalone, you can get by without it.

A good article: Why I Am Not a Maker. With one comment by me.

If you hang around with or are involved in some way with IT people, you will come across individuals extolling the virtues of being a “Maker”. Making things (typically software or IT systems) is seen as a virtue, in some case one of the highest virtues, and the implication is that makers are virtuous people.

A well written critique of that is here: Why I Am Not a Maker – The Atlantic. If you consider yourself  a maker or aspire to be considered one, you should read it. A key point is this:

When tech culture only celebrates creation, it risks ignoring those who teach, criticize, and take care of others.

This is true: tech culture sometimes places little or no value on other activities, such as the ones that the article mentions.

My main criticism of the article is that it has a blind spot for the middle ground. I know plenty of creative people whom I consider makers that also take care of others, teach, manage, administer…you name it. Often time the things they make are superior to those of people who devote themselves to being makers.

Being a maker is a virtuous thing, for the most part. But so is teaching, providing care, managing, cleaning, coaching and many other positive activities. Find the thing you are good at and contribute positively in your own way.  If you can make some things along the way, all the better.

Some thoughts on recently teaching myself Python

I have jumped on the Python bandwagon lately. I did because I was finding that more and more of the examples provided for integrating with APIs and for working with new technologies were often in Python. So I decided, why not? At first I tried teaching myself by way of various web sites, but I didn’t find this a satisfactory way to ramp up my skills as well as I wanted. It wasn’t until I came across this book in my local bookstore, Python in 24 Hours by Katie Cunningham and started learning from it did I find my skills increased at the level I wanted. By the time I was through it, I found I was writing good (not great) Python code at the level I was happy with. Furthermore, I felt I had a pretty good handle on the language, its features, and what it can do.

I highly recommend this book, and Python too. If you are new to programming, or are thinking of picking up a new language, read this piece: Why Python Makes A Great First Programming Language – ReadWrite.

What programming language should you learn? (2015 edition)

It depends on a number of factors, but if you want to decide solely on popularity, then you need to see this: The Most Popular Programming Languages of 2015 | ProgrammableWeb.

 

At the top you have some consistency, with Java at the top, and C, C++ and C# in the top five. Python, a language that I am becoming fond of and using to replace Perl, is up there at #4.

Following that are what you’d expect: PHP, Ruby, and Javascript, as well as some data oriented languages.

What is interesting, and not shown, are new and up and coming languages, such as Swift. I expect that to inch into the top 10 in the next few years.

If you want to focus on learning a programming language, and you have no other criteria, pick something from this list.

ICYMI: What is code, by Paul Ford

Happy Monday! Are you affected by code at work? Of course you are! Do you code at work yourself? Very likely, even if it is to use formulae in a spreadsheet program like Excel (which, years ago, would have required been considered coding). However code affects you, I highly recommend you read this:
Code. It’s a very rich piece on code (i.e. software) and what it means to you (and everyone else).

Among other things, it is brilliantly designed. Lots of hard work went into this piece. If you can’t get started yet this week at work, read this as a research project.

Why Apple TV will be the Next Big Thing from Apple


Why do I think that? Because according to this, Apple TV apps are coming (Business Insider). There are a limited set of apps now, but if Apple steps back and lets other develop apps, the Apple TV device could get really exciting.

What you should know if you are planning to learn to code

If you are going to learn to code and you are planning to stick with it, then you owe it to yourself to read this: Why Learning to Code is So Damn Hard.

It’s well written, and it has some great graphs, including this one:

I think any area of learning where you get good initial training would look similar to this. I recommend you find some mentors to help get your through the desert of despair.

P.S. Yes, I realized they borrowed heavily from Gartner’s Hype Curve. 🙂

Want to start a startup? All you need for that is here

And by here, I mean this site: Startup Stash – Curated resources and tools for startups. It is an amazing collection of tools you likely will need, for one thing. Plus, it has a superb user interface that not only groups the tools well, but gives you a sense of all the things you need to think about if you are going to go forward and create your own startup.

If you aren’t seriously thinking about startups, but would like to know about new tools to make you more productive at work, then I recommend you check out this site too.

Kudos to the creator of the site. Well worth a visit.

Git 201: how to get to the next level with git


There are quite a few really good introductions to git. I’ve written about them here. Once you get past “git 101”, where do you go to learn more and be more productive with git? I’d like to recommend this article:
developerWorks: Learn the workings of Git, not just the commands. It should help you get to the next level. I particularly like the diagrams: there are alot of them, and they help you better understand the flow that can occur when you really start capitalizing on git.

Another tool to help with stress: the Online Meditation Timer

The folks at this site have a number of tools to help with stress, including this: Equanimity Project: Online Meditation Timer.

If you can sit quietly at your desk for awhile, it may just be the thing to help you calm your mind and get back to a more peaceful state before you proceed with your day.

If you are thinking of writing apps for a living, this is still worth reading

This came out awhile ago (As Boom Lures App Creators, Tough Part Is Making a Living – NYTimes.com) but if you are thinking about writing apps for a living, then you should read it.

If you have a great idea for an app and a passion to develop it, you should. Just finish the above piece in the Times and keep it in mind.

How to learn Python: fast, slow and somewhere in between

As one of my areas of skill development this year, I am teaching myself Python (the programming language). I had a number of different sites offering help with it, but I have found these three the most useful, so far. I have found each of them useful, but I have spent the most time on “medium”. If you are interested in learning Python, I recommend you check these out:

Fast: Tutorial – Learn Python in 10 minutes – Stavros’ Stuff. Great as a cheatsheet or a quick intro to Python or if you used to do work with Python but haven’t done it in awhile.

Medium:the Python Tutorial from python.org. If you know other programming languages, this is a good starting point.

Slow: Learn Python the Hard Way. Good if you don’t know much about programming and want to make Python the first language you know really well.

How to be more productive at work? check out what tools other people use

Chances are, if you talk to five different people at work, you will find five tools or techniques they use to be productive that you hadn’t even heard of.

Rather than do your own polling, you can also check out this article: Most Popular Apps Employees Use At Work – Business Insider.

Remember, these are just for work, and yes, Facebook still shows up there. And this is just the cloud / distributed services. (Also, I am wondering Evernote didn’t show up there.)

I  would be surprised if you read it and didn’t adopt at least one of the items on the list by the end of your work day. Good luck.

A great little tutorial on MySQL that covers Windows, Mac OS X, and Ubuntu (Linux)…

…can be found at this link:

MySQL Tutorial – How to Install MySQL 5 (on Windows, Mac OS X, Ubuntu) and Get Started with SQL.

Even if you don’t know hardly anything about SQL or databases, you will find this helpful. It covers pretty much everything you need to know to get started, and it’s a great cheat sheet for people who have more experience but need to know a command format or get some other quick guidance.

Recommended.

P.S. It specifies Ubuntu, but if you are using other distros like CentOS you should still find it helpful.

10 ways to get more out of another great tool, Evernote

Yesterday was about ifttt. Today it is all about another great tool I highly depend on: Evernote. Evernote has become my go to tool for capturing information. (Bonus: it works great with ifttt). There are many great ways of using Evernote. If you are using it or planning to, here are at 10 for starters: 10 Tips On How to Use Evernote To Its Fullest « The Solopreneur Life®.

Please share any other tips you have. I find the one key tip I have for users of Evernote is this: the more you use it, the better it gets.

 

Are you trying to learn to code? Are you finding it difficult?

It’s likely not you. As this piece argues, Learnable Programming, there are limits to the approaches that online sites have which many can get by, but some cannot. If you are in the latter group, give this piece a read. Afterwards you might think: aha! That’s why I couldn’t get it!

With technology, if you don’t understand something, don’t assume the problem lies with you. It may, but most of the time, the problem lies with the technology.

A simple example of how to set up a PHP-MySQL application in IBM Bluemix (including the code you need)

While PHP is not one of the standard runtimes provided in the Bluemix catalog, the sample code in this git repo (
https://hub.jazz.net/git/u27275/blm-hello-world-php/) will show you how to bring your own buildpack, and this buildpack will allow you to have PHP code running in Bluemix that also can talk to a MySQL database running in Bluemix.

Among the files there is a PDF providing detailed instructions on how to set things up in IBM Bluemix.

P.S. This is sample code.  See the licence file in the repo for more details.