Tag: Python

High-Performing Python

I was pleasantly surprised to see some very useful downloads when I opened the November 2017 issue of the Intel Developer Products Newsletter:

  • Intel Distribution for Python – Accelerate Python Performance – Powered by ANACONDA, and
  • Intel Performance Libraries – Download these free libraries today to create better, more reliable, and faster software applications.
    • Intel Data Analytics Acceleration Library (Intel DAAL)
    • Intel Math Kernel Library (Intel MKL)
    • Intel Integrated Performance Primitives (Intel IPP)
    • Intel Threading Building Block (Intel TBB)
    • Intel MPI Library (Windows Package)

Rather than write about these free offerings from Intel, click on the links above to see and choose the tools that will serve you best.  The files are relatively large and you may want to reserve your time for when and how you download them to your machine.  Versions are available for Windows, MacOS, and Linux.

Anaconda is my Python installation of choice if not simply for the ease of maintaining the many Python packages that are available.  That the Intel distribution for Python is powered by Anaconda is not surprising.

Although I’ve expressed my fair share of caution when using code libraries written by others, I have no concerns with Intel as the documentation is more than thorough.  If you’re truly interested in a comprehensive Python installation, consider this package offering from Intel.

Until Next Time, stay LEAN!

Versalytics

 

 

Advertisements

GUI’s, wxPack, and wxWidgets

The official wxPython logo
The official wxPython logo (Photo credit: Wikipedia)

wxWidgets and GUI’s

In our post “Where’s the Graphics? Learning from our Roots (Tcl / Tk)” we focused on Tcl/Tk as a primary GUI development language.  We also mentioned QT as a viable alternative.  QT provides a more powerful GUI development API when compared to Tcl/Tk, however, the licensing schema for QT is also more complex.

To paraphrase the description from the wxWidgets website, wxWidgets is a C++ library that includes bindings for C++, Python and other languages to create cross-platform applications for Windows, Mac OS X, Linux, and more.

wxWidgets is available free of charge and offers a comprehensive collection of widgets that make it ideally suited for advanced GUI intensive applications. By using the native platform API, wxWidgets provides a native look and feel to your applications.

The latest version of wxWidgets is 3.0.2 as announced in the latest news release dated October 6, 2014.

wxPack

Thanks to wxPack, we’ve expanded our list of cross-platform GUI’s to include wxWidgets.  wxPack greatly simplifies the task of installing and setting up wxWidgets on your machine.  wxPack is a full wxWidgets Development Kit, complete with wxWidgets source and binaries, wxFormBuilder (RAD Tool), and more.  Without wxPack, installing wxWidgets is a task best left to more seasoned developers.

wxFormBuilder

From a development perspective, wxFormBuilder is the tool that ultimately caught our attention.  More specifically, wxFormBuilder offers the following features that are ideally suited to our language base and development environments:

  • Visual design of wxWidgets dialogs, frames, panels, toolbars and menubars
  • Source code generation for C++, Python, PHP, Lua and XRC
  • Support for wxWidgets 3.0 widgets (wxRibbonBar, wxPropertyGrid, wxDataViewCtrl, …)
Python and Qt
Python and Qt (Photo credit: Wikipedia)

Selecting Your GUI Tool Kit

The wealth of information available to learn and implement Qt suggests it is one of the better supported GUI tool kits in general. TKinter (Tcl/Tk) is also well supported due to it’s inclusion with the standard Python distribution.  Regardless of the tool kit chosen, the initial learning curve can be rather steep for more complex applications.  The number of widgets and options available with each package only add to the challenge of which package to choose.

Keeping it Lean

Too many options can make for more complicated interfaces than are necessary to meet the needs of the application and it’s end users.  For Python, TKinter provides a minimal widget set that serves the majority of our requirements.  That it’s already included with the standard Python distribution makes TKinter an even more convenient and attractive option.

There are times where a higher level of complexity and sophistication is necessary.  Of course, to learn every GUI kit available isn’t an option available to everyone.  The wealth of information and code samples available for QT make it a highly regarded option.

wxWidgets may just be the Goldilocks solution, falling somewhere between simplicity and sophistication where the tools available make it “just right” to get the job done.  A quick review of the wxWidgets Class List suggests there are more than enough features to develop a robust GUI for your application.

Ultimately, the right choice is the tool kit that is both effective and efficient for the given application.  Simplicity serves the purpose best especially during rapid development cycles and iterations.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

Vergence Analytics

ActiveState Tcl 8.6.2.0

Tkinter demo: many widgets
Tkinter demo: many widgets (Photo Leancredit: Wikipedia)

It’s hard to believe that one day after we published “Where’s the Graphics?” ActiveState released Tcl 8.6.2.0.  Though the link to the download page remains the same, we updated the context of our post to reflect the latest version number.

Visit the ActiveState Tcl 8.6 page for more detailed information.  ActiveState’s ActiveTcl Community Edition is a free, ready-to-install distribution for Windows, Linux, and Max OSx.

Though other GUI options exist, Tcl/Tk is a proven technology that has persisted for more than 25 years.  The latest release offers features that continue to keep Tcl/Tk relevant and at the top of our GUI toolkit.

In addition to the numerous resources listed in our “Where’s the Graphics” post, a wealth of information can also be found at wiki.tcl.tk.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

Vergence Analytics

Where’s the Graphics? Learning from our Roots (Tcl / Tk)

Tkinter demo: many widgets
Tkinter demo: many widgets (Photo Leancredit: Wikipedia)

One of our “side bar” challenges is developing software solutions (applications) for our clients.  Simple or complex, they all have one element in common, a Graphical User Interface or GUI.

Imagine the surprise and disappointment on the faces of many beginning programmers and developers when they discover that powerful languages like Assembler, C, C++, and even Python start by teaching you how to write software from the command prompt!

We’ve been there too!  When we decided to learn Python – a powerful, high-level, dynamic interpreted scripting language that is quickly becoming the language of choice for new developers – we were just as surprised to be writing and running programs from the command line (C:\).  Even Python’s Interactive Development Environment (IDLE) uses a “prompt” driven interface.

Basic Fundamentals

Our journey with Python originated with our interest in learning C++.  When we discovered that Python is written in C++, we were curious to see how C++ could be used to create an even more powerful dynamic language.

Learning a language and creating a GUI are related but they are not necessarily the same.  Developing an application requires a solid understanding of the core language itself including its capabilities and constraints.  A GUI “simply” serves as a means of interacting with the core application without concern for how the program actually functions or performs internally.

By way of analogy, driving a car does not require us to understand the intricate functions of the engine and powertrain.  As drivers, we use a key to turn the engine on or off, a gear selector, the accelerator and brake pedals, and the  instrument panel – all of which are the equivalent of a GUI in terms of function – to control and monitor the vehicle.  As developers, however, we are more concerned with ensuring that the engine and powertrain function as expected.  In other words, the GUI can wait but it should still be a consideration during the development process.

Where’s the Graphics?

The result
The result (Photo credit: Wikipedia)

Is writing applications with a nice, clean, graphical interface a mystery that only professional programmers can master?  This answer may surprise you.  Anyone can create a GUI and there is yet another language for doing just that:  Tcl/Tkinter. Tcl is a general purpose scripting language developed by John Ousterhout in 1988 and was designed to enable communication between applications.   Tkinter is a cross platform toolkit that provides a variety of widgets for building GUI’s in many languages.

Most introductory books on Python are concerned with teaching the core fundamentals of the Python language itself, though some may provide a brief introduction to Tkinter.  It is significant that Tkinter is included as part of the Python distributions that are freely available for download from the Python.org website.  Including Tkinter in the Python distribution enables the development of simple to complex GUI’s for your application.

Back to the Beginning

Although other packages such as wxWidgets and PyQt are available, that Tkinter is included in the standard Python distribution makes it much easier to integrate and explore.

To fully understand the Tcl/Tk programming language, we decided to search for more information.  We discovered an excellent Tcl/Tk Tutorial at TutorialsPoint.com where we are served with a wealth of information for both Tcl and Tk.  This is certainly enough to whet your appetite for more.

The TutorialsPoint Tcl/Tk  Tutorial describes several features of Tcl and this is one that caught our attention:

 “You can easily extend existing applications with Tcl. Also, it is possible to include Tcl in C, C++ or Java to Tcl or vice versa.”

What seems like an overly extended tangent from our original pursuit of C++ has become a worthwhile journey.  One of our greatest frustrations while learning C (and C++) was the lack of information for developing a graphical interface for our applications.  It looks like we may have discovered something that will help us along the way for a variety of languages.

Tcl/Tkinter Resources:

If you are using an Apple computer, Tk and Python are already installed on your system as part of the OSx.  The versions installed depend on the version of OSx you are running on your computer.

We recommend visiting SourceForge.net and searching for the term “Tcl/Tk”, without the quotes, using the site’s search box.  You will be presented with the latest version of Tcl (8.6.2) and variety of other related tools including several Tcl extension packages and IDE’s.

To get the latest copy of ActiveState‘s version (8.6.2.0) of Tcl/Tk for your system (Windows, Linux, Mac OSx) visit the ActiveState.com download page.  The community version is free and will be more than sufficient to get you started.  Click here to see some interesting code snippets or “recipes” on the ActiveState site that demonstrate some of the key features of Tcl/Tk.

We already suggested that TutorialsPoint offers an excellent introduction to Tcl/Tk Programming, however, we have also discovered several books that are worth mentioning to get you started:

Python and Tkinter GUI:

Python and Other GUI’s:

C++ and Qt:

English: Screenshot Qt Designer Русский: Скрин...
English: Screenshot Qt Designer Русский: Скриншот Qt Designer (Photo credit: Wikipedia)

While some are comfortable to accept the tools at face value, we found it helpful to delve into the core of Tkinter and Tcl to fully appreciate and understand the underlying language and tools that are available to us.

Finally

As Operating Systems continue to compete for market share, it is good to know that we have cross platform GUI options that will allow us to write applications that will work on all of them.  To this end, we’re less concerned about “who wins” and more concerned about writing efficient and effective applications for our clients.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

Vergence Analytics

On Target Tangents

Time Tangents

Our world is full of distractions and we often find ourselves on a path that seems so distant from our original plan. We wonder where the time went and ask ourselves …

“How Did We Get There From Here?”

Are tangents disruptive impulses that take our eyes off of the goal, causing us to lose focus, and drain away our valuable time? Or, do we embrace them as an extension of “how we think” and seize the opportunity to expand the scope of our original thought processes.  Our desire to learn fuels our passion to …

Explore New Options

Some time ago we expressed our interest in learning the C++ programming language.  C++ is an amazing language and we have gained a real appreciation for object oriented programming.  While learning C++, we discovered that another very powerful language, Python, was written in C++.

Naturally, we decided to check out Python to see the power of C++ in action.  To our surprise, we learned that Python is readily available at no charge from https://python.org, is very powerful, and is an extremely versatile Object Oriented Programming language.  Python is also relatively easy to learn and is now our language of choice for rapid prototyping and development of complex solutions.

Today we discovered yet another language:  “Go”.  Coincidentally, we stumbled upon a post at TechCrunch.com titled, “Google’s Go:  A New Programming Language That’s Python Meets C++”.  We downloaded “Go” from GoLang.org to explore what this language brings to the table.

We’re committed to continue learning C++, however, we would be remiss if we decided to simply stick to the straight and narrow path of one language alone.  Where speed of execution is a factor, C++ prevails.  Where speed of execution, small size, and a “close to the metal” solution is required, Assembler takes precedent. However, where speed is less of a concern, a solution in Python is heavily favoured.  As we’ve stated many times before:

“There’s always a better way and more than one solution.” ~ Redge

When Opportunity Knocks … Answer

It would be easy to ignore the distractions that seem to stall our progress and keep us from reaching our destination, however, sometimes the journey is best enjoyed when we stop and take in the sights along the way.  In this case, the ride has been an eye opening experience.

Although we started our learning process with Python 2.7.6, we’re currently using Python 3.4.1.  Python is available and runs across the three platforms that concern us most:  Windows, OSX, and LINUX.  Soon after, we also downloaded Anaconda Python from Continuum Analytics.  The reasons for downloading Anaconda Python will become clear once you’ve had a chance to delve into the world of Python and all it has to offer.

Though we may have strayed from our C++ learning process for a short while, the Python experience has been and continues to be a tremendous journey.  Python has presented a realm of significant possibilities in Object Oriented Programming that would otherwise have remained a mystery.

Learning Python

A simple Google search for “Python Programming” will yield a host of web sites that offer tutorials, books, and so much more.  We started with a few simple books and added a few more that we purchased from our local book store to gain a sense of what Python had to offer:

The number of books available on the store shelves pales in comparison to the offerings available on Amazon.  We have since purchased a number of e-books that are easily and readily accessible using Kindle across multiple devices including my iPad and Surface Pro.  If you haven’t had a chance to work with Kindle, we highly recommend it.  It is an excellent app that makes reading e-books a breeze.

Unlocking Potential

Certainly this recent tangent has opened more doors than we could ever have imagined and we’re grateful for the experience.  While this may seem to have little to do with Lean or OEE, we would suggest otherwise.  Each program or script is comprised of multiple processes or series of processes and the environments in which they run are as diverse as the machines we find in manufacturing operations.  From our perspective, programming serves as an excellent surrogate to demonstrate lean practices and the effectiveness of our operations.

Just when you think you have all the answers, consider that one of them may hold more questions than you ever imagined.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

Versalytics Associates

Executable Python on Windows

We provide solutions to our clients in a variety of forms.  Customized software solutions is just one of them and knowing more than one programming language makes it possible to choose an effective and efficient platform accordingly.

Python is a relatively simple yet powerful language. I was concerned that anyone wanting to use programs written in Python would also have to install Python on their system. After spending a little time researching Python on the internet, I was pleased to learn that Python programs can be converted into executable files – at least on Windows.

You can visit the py2exe.org website for more information including a tutorial and links to download the software required for your version of Python. To quote the first line of the py2exe.org Tutorial page:

py2exe turns Python programs into packages that can be run on other Windows computers without needing to install Python on those computers.

The py2exe installation wizard checks the version of Python installed on your machine. Be sure to select the py2exe version that matches the version of Python installed on your system.  The wizard will not install py2exe otherwise. I’m running Python version 2.7.6 on my Surface Pro 2 and successfully installed py2exe from Source Forge – py2exe for py 2.7

If programming is of interest to you, check out Python for yourself. Like so much on the web today, you can get everything you need to get started free of charge.  All you need is a computer, time, and a little determination.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

Versalytics Analytics