Tag Archives: python

  • Learning Enough Python to Land a Job

    shutterstock_244148398

    If you want a job programming in Python, prepare to do a lot of work beforehand. The language is easy to pick up, but you need to do more than just learn the basics; to get a job, you need to have a strong understanding of some pretty complex processes.

    Python is a general-purpose language, which means it isn’t used for just one purpose such as Web development. Rather, it’s used in many different industries, and the industry in which you choose to work will determine how you actually learn the language.

    For example, if you’re hired to write apps that interact with operating systems and monitor devices, you might not need to know how to use the Python modules for scientific and numerical programming. In a similar fashion, if you’re hired to write Python code that interacts with a MySQL database, then you won’t need to master how it works with CouchDB.

    Check out the latest Python-related jobs.

    Therefore, I’m going to suggest that there are three levels to learning the basics of Python:

    • Learn the core language itself, such as the syntax and basic types; learn the difference between Python 2 and Python 3.
    • Learn the commonly used modules, and familiarize yourself with other modules.
    • Learn the bigger picture of software development with Python, such as including Python in a build process, using the pip package manager, and so on. This involves learning about different databases and other technology, depending on where you want to work.

    True Beginners

    At a basic level, Python is an easy language to learn and use. You can quickly learn how to create variables and loops, for example, and expand beyond that to tuples, lists, and dictionaries. Any Python newbie needs to know which types are immutable, which means an object of that type can’t be changed (answer: tuples and strings). With immutable types, the object’s value itself can’t change, but the variable containing the object can:

    a = 'abc'
    
    a = a.upper()
    
    

    In the above example, the original string “abc” did not change, as strings can’t change; instead, we calculated a brand new string, “ABC,” and stored that back into the original variable. Knowing that sort of thing should be second nature to anyone who seeks to understand how Python works.

    In addition, anyone learning Python should know how the language deals with object-oriented programming, and how to create classes and instantiate objects. It’s also important to know how to use exceptions and exception handlers, and how modules interact. (For key insights, I recommend you read and understand the Python Language Reference; if you’re ever unsure about syntax or how the language works, or are arguing with a coworker, that website will have the final word.)

    The Python beginner must also know how Python 2 and Python 3 are different. Python 3 has been out for quite some time, but there are still a lot of projects that rely on Python 2. If you’re interviewing for a position, you’ll want to ask which Python they’re using; if you’re knowledgeable, you can then speak about the differences.

    Slightly More Advanced

    Once you’ve mastered some basic concepts, you can move on to slightly more advanced concepts. If you’re familiar with languages such as JavaScript, Python’s strong typing might surprise you; for example, you can’t just add “hello” to “10” to get “hello10.” (You’ll get an exception.) This is meant to prevent bugs in your code, and it means you’ll need to become very familiar with dynamic typing, strong typing, duck typing, and how Python implements all three.

    C++ programmers coming to Python might be surprised that you don’t need to provide an interface for a parameter in a function; if the object passed in has the required methods, you’re good to go. This makes polymorphism easy.

    From there, it’s important to know about closures and “first class objects.” Python supports both, which leads to a concept called decorators, which this article explains very well. Here’s an interesting example of closures, modified from one offered in the linked article; this is entered from the interactive shell:

    
    >>> def outer(x):
    
    ...     y = x * 2
    
    ...     def inner(z):
    
    ...         return y + z
    
    ...     return inner
    
    ...
    
    >>> q = outer(5)
    
    >>> r = outer(6)
    
    >>> q(2)
    
    12
    
    >>> q(3)
    
    13
    
    >>> r(2)
    
    14
    
    >>> r(3)
    
    15
    
    >>>
    
    

    The function outer creates a closure with the variable called y, and returns a new function that you can call. I called the outer function twice to create two such functions; then I called those two functions each twice.

    Last but certainly not least: Read “The Zen of Python,” which is funny and real, and check out this thread on Stack Overflow for some great suggestions about how to master the language. Go to GitHub and find any of the many popular Python projects; study the code as much as you can.

    Side Note: Learn the Modules

    The modules are your libraries, your helpers. Know what’s available in the standard library; you don’t have to memorize every member of every class, and every class of every module, but you do want to know what’s available so that when you need something, you don’t go rewrite one from scratch.

    Familiarize yourself with each module. Many, such as file I/O, have access in almost every application; know these inside and out. For example, know how to open a file with different access, how to read a file, how to write a file, and how to determine if a file or directory exists. Know how to use the os.path module for file-path joining and normalization, rather than writing your own string routines to handle file paths. Finally, understand the cross-platform implications.

    Next: Learn Software Development With Python

    There are many tools for integrating Python into a software development cycle. If you want to master the language in a real-world context, learn how to obtain Python packages using pip. You should also learn how to do unit testing, which is fundamental to software development in Python; many people get turned down for Python-related jobs because they can’t answer interview questions in this area. (The Hitchhiker’s Guide to Python includes some great information on unit testing.)

    You should also know how to package up Python programs for distribution, and know your way around both the Windows command prompt and Linux bash shell. Any developer worth their salt can use the tools for general software development, from editors and IDEs to git for source-code control.

    Targeting an Industry or Technology

    Once you’re familiar with all the above, you can begin to move into industry-specific knowledge.

    If writing C or C++ extensions to Python interests you, check out this resource. If Web development tickles your fancy, you’ll need to understand the difference between a Web server written in Python that you can extend, and a Web framework that allows you to write your own server software in Python. If you go the Web route, you’ll need to become proficient in Web technologies—not only other languages such as JavaScript, but how to develop Web-scalable software.

    There’s also some crossover between specializations. For example, if you’re building Web server software in Python that runs on a cloud, you might need to know how to build cloud-monitoring and management tools (possibly in Python as well). Those tools include Amazon AWS SDK for Python, or the OpenStack’s official clients, which are also written in Python.

    If you want to land a job in a scientific industry, you’ll need to know the various scientific and numerical modules inside and out, and have strong skills in writing tight algorithms. For jobs in high-performance computing, you need skills such as concurrent algorithms, SIMD vectorization and multicore programming. For a full list of how to use Python in a work context, check out the dedicated page for applications for the language.

    The post Learning Enough Python to Land a Job appeared first on Dice Insights.

  • Best Programming Languages for Linux Devs

    shutterstock_McIek

    Ask any knowledgeable developer to name the first programming language they would associate with Linux, and he or she would likely answer C, given the closely aligned history of Unix and C.

    But in the 24 years since it first appeared, Linux has probably been home to every programming language known to humankind: Not just obvious languages such as C, C++, Python and Java but also C# (Mono), Fortran, Pascal, COBOL and Lisp and many more.

    Check out the latest Linux jobs.

    In a December 2014 survey, readers of Linux Journal placed Python at the top of their list of best programming languages (30.2 percent), followed by C++ (17.8 percent), C (16.7 percent), Perl (7.1 percent), and Java (6.9 percent). Those rankings have remained largely unchanged over the past few years—unsurprising, considering the Linux world is a rather conservative place. (One language rapidly moving up Linux Journal’s list is Google Go: It jumped from 1.8 percent in 2013 to 2.4 percent last year.)

    Unlike Windows with its built-in GUI, Linux leverages whichever GUI toolkit you use (e.g., Ot, GTK+, wxWidgets) unless you limit yourself to terminal programming. Of course, not all Linux development requires a GUI: Think of servers or daemons, which are Linux’s equivalent of Windows services. So let’s look closer at each of Linux Journal’s top five languages in order to assess the strengths and weaknesses of each for Linux development.

    Python and C++

    Python just seems to get more and more popular, and is arguably the best general-purpose language currently around. It’s easy to learn, helped by having an interpreter (pypy) and compilers such as cpython, Jython (generates Java code) and others that take Python and produce il code (on .NET), or C, C++ or JavaScript.

    Developing AAA games and High Performance Computing (HPC) is where Python hasn’t done so well. C++ currently dominates those spaces, with Python having notably little impact on mobile development other than in open-source. I’m not sure we’ll ever see AAA games development switch to Python but it’s certainly making inroads into the HPC arena. (I like C++ but attaining expert programming knowledge in it seems to require being a full-time developer; compare that to Python, which can be picked up by young children.)

    C

    C is as close to the metal programming as you’ll ever get unless you code in assembler; Linus Torvalds lists this closeness as a reason why he likes it. It’s simple to learn, and once you master pointers, you can do pretty much anything. However, you have to write a lot of code to do things that come standard in other languages; string handling in particular is tedious and error-prone. For low-level coding, C is hard to beat and there’s lots of software written in it (probably much more so on Linux, which is largely written in C).

    Perl

    For many years Perl—described by many developers as the “Swiss Army chainsaw” of scripting languages—was the language for sophisticated text processing scripts, and came installed on Linux/Unix like systems by default. It’s been around since 1987, with a massive install base to match: According to the ever-reliable Wikipedia, the Comprehensive Perl Archive Network (CPAN) carries over 140,776 modules, by more than 11,804 authors, and is mirrored worldwide at more than 250 locations.

    Despite (or perhaps because of) Perl’s age, languages such as Python, PHP and Ruby have gradually come to replace it. But don’t expect it to go away anytime soon.

    Java

    Linux has always seemed like the natural home for Java, at least with regard to server-side technology. The pattern of client-side Windows applications talking to Linux Java servers is a common one and very popular in enterprises. The Java JSP Web server technology hasn’t come close to PHP or ASP.NET in terms of adoption rates, but you can find (often expensive and resource-intensive) JSP Web hosting. Java powers many Internet game servers, most notably Minecraft.

    Two other languages that work well on Linux are JavaScript and Go. After ten years of being lambasted for poor performance, JavaScript became seriously cool when popular websites such as Google Maps began to leverage it. JavaScript continued to improve; thanks to better engines, it’s now able to run graphically intense browser games.

    If that wasn’t enough, JavaScript has emerged as a serious server-side language, with Node.js being one of the best-known frameworks.

    Google Go

    At less than five years old, Google Go has gained its share of admirers; Google, Dropbox and other companies use it for their respective internal systems. With an easy-to-learn C-like syntax, it compiles and executes programs very rapidly and makes writing concurrent code a lot easier than a multithreaded approach. It comes with an extensive standard library that’s complemented by many third-party libraries. Although it’s a general-purpose programming language, it’s strong as a systems language, and useful for implementing Web servers.

    Conclusion

    All programming languages are just tools to help solve programming problems, and the choice of which to use is often determined not by the languages’ strengths but completely unrelated factors such as available hardware, internal politics, previous experiences and the like. Linux hardware varies from simple, low-cost systems to million-dollar “Big Iron” mainframes… But irrespective of the cost, it will run any of these languages.

    Related Articles

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    Image: Mclek/Shutterstock.com

    The post Best Programming Languages for Linux Devs appeared first on Dice News.

  • Which Programming Language Pays the Best?

    shutterstock_Lightboxx

    What programming language will earn you the biggest salary over the long run?

    According to Quartz, which relied partially on data compiled by employment-analytics firm Burning Glass and a Brookings Institution economist, Ruby on Rails, Objective-C, and Python are all programming skills that will earn you more than $100,000 per year. Java, C++, JavaScript, C, and R also topped the list, routinely racking up salaries of $90,000 and above.

    Click here to find programming jobs.

    “The dataset isn’t perfect, it’s missing newer but increasingly popular languages like Erlang and Haskell, likely because they don’t turn up all that frequently on job ads and resumes,” Quartz explained in the accompanying article. “A large number of the ads also don’t list salary.”

    But salary doesn’t necessarily correlate with popularity. Earlier this year, for example, tech-industry analyst firm RedMonk produced its latest ranking of the most-used languages, and Java/JavaScript topped the list, followed by PHP, Python, C#, and C++/Ruby. RedMonk predicted that new languages such as Apple’s Swift and Google’s Go, while ranked very low at the moment, will also climb into more prominent positions over the next few years.

    Meanwhile, Python was the one programming language to appear on Dice’s recent list of the fastest-growing tech skills, which is assembled from mentions in Dice job postings. Python is a staple language in college-level computer-science courses, and has repeatedly topped the lists of popular programming languages as compiled by TIOBE Software and others. (In addition to Python, other popular languages in college intro courses include Java, MATLAB, C++, C, Scheme, and Scratch.)

    “The best programming language may well be the one that is most likely to help you consistently find a job, not necessarily the one that pays best,” is how Matt Asay described, in a recent ReadWrite column, the dilemma facing today’s programmers.

    In other words, pursuing a language because of the six-figure salary, while tempting, might not prove your best option in all circumstances.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    Related Articles

    Image: Lightboxx/Shutterstock.com

    The post Which Programming Language Pays the Best? appeared first on Dice News.

  • 5 Top Python GUI Frameworks for 2015

    pyGUI

    As a Python developer, sooner or later you’ll want to write an application with a graphical user interface. Fortunately, there are a lot of options on the tools front: The Python wiki on GUI programming lists over 30 cross-platform frameworks, as well as Pyjamas, a tool for cross-browser Web development based on a port of the Google Web Toolkit.

    How to choose between all these options for Python GUIs? I started by narrowing it down to those that included all three platforms (Windows, Mac, and Linux) and, where possible, Python 3. After that filtering, I found four toolkits (Gtk, Qt, Tk, and wxWidgets) and five frameworks (Kivy, PyQt, gui2Py, libavg and wxPython). Here’s why I like them.

    To find Python-related jobs, click here.

    Kivy

    One of the more interesting projects, the liberal MIT-licensed Kivy is based on OpenGL ES 2 and includes native multi-touch for each platform and Android/iOS. It’s an event-driven framework based around a main loop, and is thus very suitable for game development. Your application adds callbacks from the main loop at a scheduled frequency, or by one-off trigger. The Kivy framework is very powerful for handling everything from widgets to animation, and includes its own language for describing user interface and interactions.

    If you want to create cross-platform graphical applications, or just need a very powerful cross-platform GUI, Kivy is highly recommended.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    PyQt

    Qt is a multi-licensed cross-platform framework written in C++. If your application is completely open source, you can use Qt for free under the community license; otherwise you’ll need a commercial license. Qt has been around for a long time and was owned by Nokia for a while; it’s a very comprehensive library of tools and APIs, widely used in many industries, and covers many platforms including mobile. If a gadget such as a SatNav has a GUI, there’s a good chance it’ll be Qt based.

    PyGUI

    Compared to Kivy and PyQt, PyGUI is considerably simpler and just for Unix, Macintosh and Windows platforms. Developed by Dr. Greg Ewing at the University of Canterbury in New Zealand, the MVC framework focuses on fitting into the Python ecosystem as easily as possible.

    One of the platform’s aims is to interpose as little code as possible between the Python application and the platform’s underlying GUI so the application’s display always reflects the native GUI of the platform. If you’re after a simple and quick way to learn GUI, start with this one.

    libavg

    This is another third-party library, written in C++ and scripted from Python, with properties of display elements as Python variables, a full-featured event handling system, timers (setTimeout, setInterval), support for logging and more. Like Kivy, libavg uses OpenGL and makes use of hardware acceleration.

    Libavg runs on Linux, Mac OS X and Windows, and is open source and licensed under the LGPL. It’s been used extensively for artistic exhibitions and has a wide range of features such as a layout engine that can deal with thousands of objects (images, text, videos and camera output), fast video output, and a markup system for displaying text, as well as GPU shader effects such as blur, Chromakery and more. Plugins written in C++ have access to all libavg internals.

    If you ever see many people playing a multi-touch game on a large flat display, you might be looking at a good example of libavg in action.

    wxPython

    There have already been two books written about wxPython, making it worth a mention even if it isn’t quite ready for Python 3. WxPython is based on wxWidgets, a cross-platform GUI library written in C++. In addition to the standard dialogs, it includes a 2D path drawing API, dockable windows, support for many file formats and both text-editing and word-processing widgets.

    There’s a great set of demos provided with wxPython, along with several sets of tutorials to help get you started. Given that wxWidgets has a 22-year development pedigree, this is one of the most popular frameworks. Make sure you read the wiki.

    Conclusion

    This is a great set of frameworks that should cover most needs. All except PyQt are completely free.

    Related Articles

    Image: pyGUI

    The post 5 Top Python GUI Frameworks for 2015 appeared first on Dice News.

  • Interview Questions for Python Newcomers

    Although Python’s popularity continues to soar, recent trainees and junior developers usually need more than a cursory understanding of the language to land their first job.

    Interview Qs“Managers are looking for people who have thought critically about their tools, instead of accepting them blindly just because they are in style,” said Mark Lutz, a Florida-based trainer and author of several books on Python.

    Click here to find Python-programming jobs.

    Answering the “how” questions is always important during an interview, Lutz explained, but answering the “why” questions suggests a dedication to improve and grow—not just earn a paycheck.

    With that in mind, Lutz provided some of the common replies to interview questions for Python newbies, and the answers that he’d rather hear instead.

    How do Python 2.x and 3.x differ, and why should you care?

    • What Most People Say: “I don’t really understand the differences between the two versions, but I noticed that the print statement becomes a built-in function in 3.x.”
    • What You Should Say: “The more significant 3.x changes include: differing and more pervasive Unicode support; mandatory usage of new-style classes; deeper integration of iterables and functional programming tools; and change, replacement, and deletion of many built-in tools (not just print). Of these, the 3.x Unicode model may have the largest impact, as it touches on strings, files, and a host of application-level interfaces in the standard library and third party domains. The new-style class model elevates topics such as the MRO, descriptors, and metaclasses from optional topics to required reading. And the more widespread role of iterables demands more careful use of tools like zip() results and dictionary key lists, for display, multiple traversals and object-like lists.”
    • Why You Should Say It: The Python world still uses both lines, and the vast body of existing 2.x code will probably be a permanent part of the Python ecosystem. Therefore, you need to understand both versions to maintain or port old code, or write new code that works on either line agnostically. While the first answer is correct, it reflects a superficial understanding of a major pragmatic dilemma Python programmers face today.

    These three statements run in series: A=[], B=A, A +=[1]. Does the third statement change B?

    • What Most People Say: “No, only A changes. Wait, I think B changes because it prints as [1] after the last statement runs, not [].”
    • What You Should Say: “B doesn’t change and continues to reference the same object it did after the second statement. Rather, the object that B (and A) reference differs at the end because it has been changed in-place through variable A.”
    • Why You Should Say It: The better answer draws a distinction between variables that reference objects and object-like lists, which is a central concept in Python. In larger programs, shared objects are often deliberately changed in-place in potentially far-flung bits of code, to update long-lived state. If you don’t understand this model, it can lead to fairly painful debugging sessions when it occurs unexpectedly. If you do, it shows deeper Python knowledge.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    What’s the point of using classes and OOP in Python?

    • What Most People Say: “Because of polymorphism?”
    • What You Should Say: “OOP and classes become indispensable as programs grow larger, primarily because they let you use and customize existing code, which reduces development time. OOP also provides code structure and avoids the pitfalls of global data that vex much function-based code. However, developers need to consider other issues. For instance, it’s OK to code functions, modules, and even top-level script code as long as you don’t expect them to be flexible enough to be reused in other programs. Top-level script code is always a one-program effort, because it runs immediately and has no container object. Functions can be imported and reused to some extent, but they don’t directly support growth by extension and must rely on arguments and single-copy global data for recording state information.”
    • Why You Should Say It: Since OOP and classes represent a fundamental design choice, it’s crucial to understand when they should and shouldn’t be used. Classes provide a hierarchy that fosters extension in ways that functions and other tools cannot. An interviewee who doesn’t express this probably hasn’t moved beyond the trivial programs phase in the learning cycle, Lutz said.

    What do you think about Python’s “batteries included” paradigm?

    • What Most People Say: “I like it. Why spend time reinventing the wheel when wheels are available for free?”
    • What You Should Say: “Batteries included is great, under certain circumstances. The quality of third-party code can be iffy and the resulting product may not support your company’s needs. In truth, cut-and-paste code could become your code base’s weakest link. You need to carefully review the code and consider the consequences to make prudent case by case decisions.”
    • Why You Should Say It: Blindly parroting the mantra that code reuse always beats writing new code could be a sign of a shallow perspective, which may produce code-maintenance nightmares down the road.

    Why would you use the super() call and why would you not?

    • What Most People Say: “super() is awesome, because it works just like it does in Java; you should use it whenever you can, instead of calling methods by class name.”
    • What You Should Say: “super() has two primary roles: In single-inheritance class trees, super() can indeed be used to invoke a method in a superclass generically. This role is essentially as it is in Java, at least for trees that will never grow to include multiple inheritance. In multiple-inheritance class trees, super() can also be used for cooperative method-call dispatch, which routes a method call to each class just once in conforming trees. This role is more unique to Python, and works by always selecting a next class on the MRO following the caller that has the requested attribute. Unfortunately, super()’s second role may have a massive downside: Its automatic method routing makes for a wildly implicit code invocation model, one that can obscure a program’s meaning, create deep class coupling, hinder customization and complicate debugging.”
    • Why You Should Say It: An interviewee who describes any of super()’s downsides gets Lutz’s vote. On the other hand, a person who only lauds the Java-like role in single-inheritance trees would strike him as someone who will probably code Java in Python. Worse, the candidate may pepper a code base with complex and obscure tools in some misguided effort to prove personal prowess instead of practicing sound software engineering.

    Have you ever written a perfect program?

    • What Most People Say: “Yes! And I’ll write even more if I’m hired!”
    • What You Should Say: “Of course not! Even though I strive for perfection, I don’t think anyone has ever written perfect software. That’s why I test repeatedly.”
    • Why You Should Say It: Perfection doesn’t happen in code and responding otherwise might suggest a towering ego that could sink an entire project.

    Related Articles

    The post Interview Qs for Python Newcomers appeared first on Dice News.

  • Python Snakes Up List of Fastest-Growing Skills

    Python Screenshot

    The most recent Dice Report offered a list of the fastest-growing tech skills, including cybersecurity, Puppet (an open-source IT automation tool), Hadoop, and Big Data.

    One programming language appeared on that list: Python, which enjoyed 21 percent growth year-over-year (as of Sept. 2), based on mentions in Dice job postings. (Skill requests had to appear in at least 1,000 job postings on a given day to qualify for the analysis.)

    Click here to find Python jobs.

    That growth is no surprise. Python, currently in version 3.4.1 (released in May 2014), remains a popular element in college-level introductory courses, according to data released this summer by the Association for Computing Machinery (AMC). It’s also topped the rankings of popular programming languages produced by analyst firm RedMonkTIOBE Software, and other entities.

    What underlies Python’s popularity? For starters, it’s a mature and well-established language that can trace its roots back nearly 25 years. Major firms such as Google have embraced it as a key tool for building Web properties. Developers and programmers of all skill levels enjoy its combination of simplicity and power.

    Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

    “Python’s syntax is beautiful; the language is concise; and it’s modern,” developer (and editor) Jeff Cogswell wrote for Dice News in August. “I consider it one of the best languages I’ve ever used, and I feel that one of the biggest mistakes made in the world of computer software was when the browsers added JavaScript as their client-side language.” Better client-side software might exist, he added, if Python had become the language of choice instead of JavaScript.

    Those interested in building out their programming skills would do well to look at Python, but other languages are also worth examining, including JavaScript, C#, PHP, and Swift.

    Related Articles

    Image: Python.org

    The post Python Snakes Up List of Fastest-Growing Skills appeared first on Dice News.

  • Here’s the latest on OpenStack

    I think an update is in order to my original OpenStack blog post . Over the last six months, we’ve seen Icehouse, the software’s ninth release, come out of the gates, along with a very successful summit in Atlanta. So, let’s do a quick recap to see where it stands now. By the numbers There’s some really interesting information that has come out of surveys from the Atlanta summit . This is really interesting information on the size of installs, environments and what versions are currently in use. OpenStack components I mentioned in my previous post how OpenStack is written in Python (basically 2.x, but there’s some momentum to rewrite everything to 3.x within the next few major releases). One of the strengths and challenges of such a large and encompassing cloud management platform is that it does a lot of things.  All of these things are split out into modules: compute (“Nova”), object storage (“Swift”), block storage (“Cinder”), networking (“Neutron”), dashboard (“Horizon”), identity service (“Keystone”), image service (“Glance”), telemetry (“Ceilometer”), orchestration (“Heat”) and database (“Trove”).  You can easily search online for more information on each of these, so I won’t get into the details here. This modular architecture may allow the community to work in a more agile way, but also comes back to pose challenges, as everything basically still needs to communicate with each other to provide a unified, seamless platform. Platforms Another thing you might notice from the recently published numbers is that Linux rules as the underlying operating system of choice.  So, if you want to gain a certain level of respect, and be able to show or prove you know your stuff, you’ll also need to have some advanced skills in Linux. Along with Linux being the leading operating system, KVM is the leading choice for hypervisor, with VMware and Microsoft Hyper-V (on Microsoft Windows) quite far behind on use. Interfaces There are several basic ways you can interface with OpenStack that come packaged: dashboard (web browser interface), command-line, Python API and a REST API (for custom interface development). For the most part, I typically lean toward the command-line interface, but will fall back on the dashboard when I’m not sure what command to use. Deployment Setting up OpenStack, even in a controlled environment, can be quite a big task.  Fortunately, if you’re looking to get something up relatively quickly, maybe for a proof-of-concept, there are some great tools out there.  Tools like Red Hat’s packstack or devstack can get you up and running quickly with OpenStack. Personally, I’m a bit of a Red Hat fan, so I’m partial to following anything it does.  If you’re somewhat familiar with Linux, you may know about Fedora (this is free, and more of a Linux desktop version) and CentOS (a free Red Hat Enterprise Linux clone), which are both supported by Red Hat and work with packstack. These automated installers are very useful, but remember that to consider yourself at the master level, you’ll want to install from scratch.  I honestly haven’t tried this yet, but it’s just a matter of time before I do, in order to gain the whole experience. I find I learn the most when something doesn’t work as expected or I have to actually troubleshoot or read the documentation, or even install files before I can really grasp how it all works. Is OpenStack “better”? I’ve never been a big fan of trying to pick which technology is better.  A few years ago, it seemed to be a debate whether Linux or Microsoft Windows was “better.”  I was never interested in these opinion-based debates, rather, I like to use the best fit. In the private cloud space, VMware seems to have the bigger market share.  I saw a recent reference on Twitter that compared VMwar e and OpenStack like this: If you have money, use VMware; if you have time, use OpenStack. Now, nothing is that simple, because most organizations have a limited amount of money, and they also have to consider that OpenStack can have integration challenges since it’s not as polished.  It can be quite costly when something isn’t done right from the start, and considering that it might be beneficial to have a Python programmer help with any integrations, time isn’t the only factor you need to consider before implementing an OpenStack-based private cloud. It’s honestly hard to imagine OpenStack becoming a major player in the public cloud arena against the likes of Microsoft, Amazon or Google, for example. Industry convergence Just like Hadoop, quite a few companies were maybe too excited to launch their own distribution.  As reality set in, we saw one recent big partnership between Intel and Cloudera. There was also a relatively big acquisition by Red Hat (of eNovance), so there may be other shake-ups including an acquisition of RackSpace (one of the original project founders). Resources Make no mistake, if you think OpenStack is easy to grasp, you’re not wrong. But mastering it can be a challenge. After all that, if you’re still with me, Pluralsight is launching an introductory course to help you along with your learning experience.  There’s nothing like having an experienced professional lead you through your training, and using their own insight to help you succeed. A very interesting resource that was announced at the Atlanta summit is a new publication called Superuser .  It’s definitely worth checking out to supplement your learning experience. With the next release, Juno, planned for mid-October, OpenStack continues to move forward.  With most technologies, any hint of slowing down in updates can be a sign of weakness, but this doesn’t appear to be a problem with OpenStack. Only time will tell if it’s here to stay. To access Pluralsight’s latest OpenStack course, click here .

  • Job Growth for Python Developers

    Open source and easy to learn, powerful and fast, Python has been ranked among the top eight most popular programming languages in the TIOBE Index since 2008. Not surprisingly, as employers recognize its ease of use and ability to integrate with other software, they’re seeking out Python developers in greater numbers. “We’re on track for continued growth for Python jobs,” says Doug Schade, principal consultant at recruiter WinterWyman in Boston. “We see a bit more Python than Ruby , but the driving force is the same. We’re meeting the needs of startups and small to medium businesses that are favoring Python and Python Django .” Click here to find Python developer jobs. He’s not the only one who sees it that way. Matt Brosseau, director of information technology at Chicago talent management firm Instant Technology , has seen an uptick in Python-related hiring in the Midwest. “If people have Python and related software experience on their resumes, they can expect to get calls from recruiting agencies,” he says. Schade believes that the increase has a lot to do with the current business cycle. “There are a lot of seed funded, Series A and Series B funded companies that are looking to scale, looking to scale quickly and looking to get the product out there,” he observes. “And this product allows you to do that.” Auxiliary Skills Brosseau typically sees requests for Python experience with more process-heavy applications. “It tends to be used more for database queries and stuff like that and it usually works directly with other systems,” he says. Having a good understanding of Linux is a plus for Python developers, he adds. “Developers will probably be doing some server-side scripting for higher applications that are going to communicate with the backend.” He also notes that a firm knowledge of relational and non-relational databases like SQL and Oracle , and maybe even MongoDB , would be a boost to job seekers. Schade adds that Web-based Python Django developers should be coupling those skills with JavaScript frameworks. “ Angular is the tip of the sword right now in terms of employer preferences,” he says. “And Ember , which is the newest, is really important, too.” N00bs Need Networks Brosseau recommends that less experienced developers get involved in online Python communities and meetups. “Hang out in the spaces where other developers are,” he advises. “Those people know where the opportunities are.” Related Stories Interview Questions for Python/Django Developers Learn Python Online With Coursera R, Octave, and Python: Which Suits Your Analysis Needs? The post Job Growth for Python Developers appeared first on Dice News .

  • Career Forecast: Do Network Engineers Need to be Programmers?

    I am fresh off a trip to InterOp Las Vegas…and happen to stumble across an interesting followup article on the show.  It is about the debate on whether or not network engineers need to also be programmers.  Interesting debate….what are your thoughts as you read the article? ___________________________ SDN: Programming Skills Needed – Or Not? […]