Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon

Tech News - Uncategorized

28 Articles
article-image-intel-acquires-easic-a-custom-chip-fpga-maker-for-iot-cloud-and-5g-environments
Kunal Chaudhari
23 Jul 2018
3 min read
Save for later

Intel acquires eASIC, a custom chip (FPGA) maker for IoT, cloud and 5G environments

Kunal Chaudhari
23 Jul 2018
3 min read
Last week Intel acquired eASIC, a fabless semiconductor company that makes customizable eASIC chips for use in wireless and cloud environments. The actual transaction amount for this merger was not disclosed by Intel. They believe that this acquisition is more “strategic” than just pure business as the competition for FPGAs is booming due to increasing demand for data and cloud services. The rise of FPGAs and Intel’s strategy to diversify beyond CPUs FPGAs were first introduced back in the 80s and were considered as an evolution in the path of fabless semiconductors. With each passing year, researchers have been trying to find innovative solutions to improve system performance, to meet the needs of big data, cloud computing, mobile, networking and other domains. FPGA is at the heart of this quest to develop high performing systems and is being paired with CPU’s to facilitate compute-intensive operations. Intel has a Programmable Solutions Group (PSG), which they created after acquiring Altera in 2015 for $16.7 billion. Altera is considered to be one of the leading FPGA manufacturers. The idea behind the eASIC acquisition is to complement Altera chips with eASIC’s technology. Dan McNamara, corporate vice president and GM of the PSG division mentioned in the official announcement, “We’re seeing the largest adoption of FPGA ever because of explosion of data and cloud services, and we think this will give us a lot of differentiation versus the likes of Xilinx”. Xilinx leads the race in the FPGA market with Intel being a distant second. The acquisition of eASIC is seen as a step towards catching up with the market leaders. Intel’s most recent quarterly earnings reports showed that PSG division had earned $498 million with 17% compound annual growth rate (CAGR), whereas on the other hand the company’s biggest division ‘Client Computing Division (CCG) made $8.2 billion but with a CAGR of 3%. Although PSG’s overall revenue is small when compared to CCG, it shows potential in terms of future growth. Hence Intel plans to increase their investments in acquiring futuristic companies like eASIC. It wouldn’t be surprising that we will see more such acquisitions in the coming years. You can visit Intel’s PSG blog for more interesting news on FPGAs. Frenemies: Intel and AMD partner on laptop chip to keep Nvidia at bay Baidu releases Kunlun AI chip, China’s first cloud-to-edge AI chip AMD’s $293 million JV with Chinese chipmaker Hygon starts production of x86 CPUs
Read more
  • 0
  • 0
  • 3104

article-image-the-tech-supporting-the-thai-cave-rescue-mission
Richard Gall
09 Jul 2018
3 min read
Save for later

The tech supporting the Thai cave rescue mission

Richard Gall
09 Jul 2018
3 min read
News of the Thai cave rescue in has shocked and gripped the world. The mission has required a good deal of bravery and ingenuity to bring back members of the young football team - at the time of writing 8 of the children have been brought back to safety. But technology has also played a hugely important part in enabling rescuers to not only pinpoint the location of the missing boys, but also to eventually get them out safely. With such a complex and unique there are no simple solutions. Rescuers have been creative in exploring innovations and a huge range of technologies that can help them bring the children to safety. How rescuers located the lost football team Identifying the exact location of the missing football team was perhaps the most challenging aspect of the rescue mission. This is why the team were missing, remarkably, for 9 days before they were discovered. However, there were a number of tools that were integral to their discovery. Drones To begin with, 3 drones with powerful 30x optical zoom cameras were used to build up a detailed picture of the area where the boys had gone missing. Wired reports that this allowed rescuers to create a 3d map of the area, which acted as the starting point for the search. Once this map was created, the drones were then used to identify the numerous access points to the caves. This would allow the rescue teams to focus their efforts in specific areas. They could distribute themselves and prioritize the areas the team were most likely to be. Communication The team that made first contact with the missing boys actually used a pretty old communication tool - something called HeyPhones. HeyPhones were used by cavers in the U.K. some 20 years ago. They work because they use low-frequency waves, which mean they can pass through thick rock walls. Now the team has been located, fibre optic cables have been passed down into the chambers to improve communication - something that's going to be essential if they are all to be safely rescued. Elon Musk's innovative ideas to support the rescue mission Elon Musk has been eager to help the rescue mission. His first solution a giant inflatable tunnel that could displace the water and provide a passage back to safety. https://twitter.com/elonmusk/status/1015105500105412610 However, Musk has now offered up a new idea: "a tiny kid-sized submarine." https://twitter.com/elonmusk/status/1015657378140704768 Whatever you think of Musk, you can't accuse him of resting on his laurels. The 'submarine' is already being tested in LA. Musk shared videos of the tests on Twitter over the weekend: https://twitter.com/elonmusk/status/1016110809662066688 Although Musk has been working hard, and a spokesperson has said there has been communication between SpaceX and the Thai government, it isn't clear if Musk's submarine will be sent out to south east Asia. A tale of human ingenuity and leveraging technology against the odds The incident has been remarkable - it is undoubtedly a tale of survival against all odds, but as you can see it's also a tale of human ingenuity and how technology can be leveraged to battle the elements. During a year where it's felt like technology is working against humanity's interests, it's a good reminder that when used properly, we can do stunning things with the tools at our disposal. Read next 5 DIY IoT projects you can build under $50 AI to the rescue: 5 ways machine learning can assist during emergency situations
Read more
  • 0
  • 0
  • 2542

article-image-slack-is-down-people-move-to-twitter-to-waste-time
Richard Gall
27 Jun 2018
2 min read
Save for later

Slack is down - people move to Twitter to waste time

Richard Gall
27 Jun 2018
2 min read
Slack is our favorite place for wasting time and sharing gifs collaborating with colleagues and peers, but right now (Wednesday 27 June) Slack is experiencing significant connectivity issues. It's not yet clear what the cause of the outage is, but Slack are aware of the issues and working to fix them. https://twitter.com/SlackHQ/status/1011965665610162177 At around 6.30am PDT, Slack posted a tweet: "We're investigating connectivity for all workspaces, thanks for your patience, we'll have updates shortly." Another update just after 7am PDT stated "our team is still looking into the cause of the connectivity issues, and we'll continue to update you on our progress." The best responses to Slack's outage on Twitter As you'd expect, with Slack down, people have been taking to Twitter. Fortunately for Slack, most of the comments weren't actually that unkind or angry. Instead, they've done what anyone would do - make funny jokes and memes. Here are some of the best from quick witted Tweeters in temporary exile from the messaging app: https://twitter.com/vboykis/status/1011971038597525504 https://twitter.com/libbycwatson/status/1011971643277758465 https://twitter.com/IrregularDave/status/1011974270598238208 https://twitter.com/joshua_eaton/status/1011970323841986560 https://twitter.com/jyarow/status/1011968697404153857 One user noted that now Slack was down, productivity might go up. The irony, of course, being that he was simply part of the wider exodus of part-time comedians and procrastinators to Twitter: https://twitter.com/JoshNaylor/status/1011973603078918145 Some traditionalists thought that the outage might actually be a good thing for IRL interaction - once again, the irony of airing their thoughts in the digital environs of Twitter lost on them... https://twitter.com/TheMuse/status/1011972281491484672 https://twitter.com/tanzinavega/status/1011971069350162432   With Fortnite also facing a number of connectivity issues, some users were quick to draw parallels... https://twitter.com/Shpigford/status/1011970924000792576 https://twitter.com/minecoder/status/1011968053653880833 While the Slack outage is largely a carnival of memes and jokes, spare a thought for the Slack support team on Twitter. They're truly doing a hero's work. One Twitter user praised the Slack team's service on social: https://twitter.com/EricaJoy/status/1011973761766080512 However frustrated the media and technology world's become with the Slack outage one thing's for certain - no one's talking about moving to Skype yet. Read next: Someone made a program to make it look like you’re typing on Slack when someone else is
Read more
  • 0
  • 0
  • 2226
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at €18.99/month. Cancel anytime
article-image-react-native-announces-re-architecture-of-the-framework-for-better-performance
Kunal Chaudhari
22 Jun 2018
4 min read
Save for later

React Native announces re-architecture of the framework for better performance

Kunal Chaudhari
22 Jun 2018
4 min read
React Native, the cross-platform mobile development framework from Facebook is going under a complete rewrite with a focus on better flexibility and improved integration with native infrastructure. Why React Native 5 years ago when React Native was announced at React.js conf 2015, Facebook opened the doors for web developers and engineers who wanted to take their existing skill set into the world of mobile development. Since then React Native has been nothing short of a phenomenon. React Native has come a long way since then, becoming the 13th most popular open source project on Github. React Native came with the promise of revolutionizing the user interface development process with its core set of cross-platform UI primitives, and its popular declarative rendering pattern. Previously, there have been many frameworks which branded themselves as “Cross-Platform” like Ionic and Cordova, but simply put, they just rendered inside a web view, or an “HTML5 app,” or a “hybrid app.” These apps lacked the native feel of an Android/iOS app made with Java/Swift and led to a terrible user experience. React Native, on the other hand, works a bit differently where the User Interface(UI) components are kept in the native block and the business logic is kept in the JavaScript block. At any user interaction/request, the UI block detects the change and sends it to the JavaScript block, which processes the request and sends back the data to the UI block. This allows the UI block to perform with native experience since the processing is done somewhere else. The Dawn Of A New Beginning As cool as these features may sound, working with React Native is quite difficult. If there is a feature that you need to add that is not yet supported by the React Native library, developers have to write their own Native Module in the corresponding language, which can then be linked to the React Native codebase. There are several native modules which are not present in the ecosystem like gesture-handling and native navigation. Complex hacks are required to include them in the native components. For apps with complex integration between React Native and existing app code, this is frustrating. Sophie Alpert, Engineering Manager at Facebook, mentioned in a blog post named State of React 2018, “We’re rewriting many of React Native’s internals, but most of the changes are under the hood: existing React Native apps will continue to work with few or no changes.” This comes with no surprise as clearly Facebook cares about developer experience and hence decided to go ahead with this architectural change with almost no breaking changes. A similar move which was applauded was when they transitioned to React Fiber. This new architectural change is in favor of making the framework more lightweight and better fit into existing native apps involving three major internal changes: New and improved threading Model It will be possible to call synchronously into JavaScript on any thread for high-priority updates while keeping low-priority work off the main thread. New Async Rendering Capabilities This will allow multiple rendering priorities and to simplify asynchronous data handling Lighter and faster bridge Direct calls between native and JavaScript are more efficient and will make it easier to build debugging tools like cross-language stack traces. Along with these architectural changes Facebook also hinted to slim down React Native to make it fit better with the JavaScript ecosystem. This includes making the VM and bundler swappable. React Native is a brilliantly designed cross-platform framework which gave a new dimension to mobile development and a new hope to web developers. Is this restructuring going to cement its place as a top player in the mobile development marketplace? Only time will tell. Till then you can read more about the upcoming changes on their official website. Is React Native is really Native framework? Building VR experiences with React VR 2.0 Jest 23, Facebook’s popular framework for testing React applications is now released
Read more
  • 0
  • 0
  • 4732

article-image-these-2-software-skills-subscription-services-will-save-you-time-and-cash
Richard Gall
18 Jun 2018
2 min read
Save for later

These 2 software skills subscription services will save you time - and cash

Richard Gall
18 Jun 2018
2 min read
Staying up to date with software is hard. This year's Skill Up report confirms that, with 43% of developers claiming that a lack of quality learning resources were a big barrier to their organization reaching its goals. It's not that there aren't learning resources are out there - there are. It's just that finding the right ones can take some time. And when you've got a million things to do and deadlines yesterday, searching for the best deal feels like a bit of a waste of your day. 2 subscription services. 3 months. $30. Luckily, 2 subscription services have teamed up to help you stay up to date in tech and prepared for future trends and tools as they emerge. Mapt and SitePoint both offer an impressive range of software learning resources - combined, they provide anyone in software with the reassurance that they have immediate access to insight and guidance on the latest tools in their field. From Monday 18 June to Sunday 24 June, you'll be able to get 3 months of Mapt - that's full access to all Packt's eBooks and videos - and SitePoint Premium for just $30. That's a whole lot of content for the price of just one book. Learn more about the offer. What you get with Mapt... Access to over 6,000 eBooks & Videos Over 100 new courses added each month Over 1,000 technologies and tools covered Curated Skill Plans to help direct your learning Skill Assessments to reinforce your learning Up to 2 FREE eBooks & Video tokens a month to keep forever Sounds good, right? But there's a whole lot more thanks to SitePoint... What you get with SitePoint Premium... 123+ DRM Free eBooks and Courses Access to over 123 courses New and trending web development content released monthly Join a community of 35,000+ members Course helpers assistance The offer ends on Sunday 24 June, so don't waste time - a comprehensive duo of software learning subscriptions are just a few clicks away...  Get your 3 month subscription to Mapt and SitePoint Premium
Read more
  • 0
  • 0
  • 2721

article-image-julia-0-7-has-been-released-time-to-prepare-for-julia-1-0
Pavan Ramchandani
13 Jun 2018
2 min read
Save for later

Julia 0.7 has been released - it's time to prepare for Julia 1.0

Pavan Ramchandani
13 Jun 2018
2 min read
Julia 0.7  announced by the Julia developer team was speculated for a long time after v0.6 was released last year. This sets the gate open for Julia v1.0 since we had seen discussions and forecast about the v1.0 after v0.6 was out. Most features included in Julia v0.7 are the feature set for Julia v1.0 with few improvements and bug-fixes. Nothing is confirmed by the Julia team yet but the community is predicting Julia v1.0 to be next after Julia 0.7. Important features in Julia 0.7 are as follows: New macros defined for testing the local variable. Destructuring in function arguments so that the variable in a function expression gets unpacked into the local variable. Keyword argument containers will be named tuples. Keyword arguments will be required in the declaration to avoid the exceptions. To know the whole list of specifications, check out the release notes page here at Julia’s GitHub repository. Julia 0.7 will be released with exceptions in compatibility for functionalities of Julia 0.6. These exceptions will, however, discontinue in Julia 1.0. Apart from this, Julia 1.0 will add some functionality that will be prevented in Julia v0.7. It seems to be a bit complicated compatibility planning by Julia community, which is expected to get sorted with Julia 1.0. The community hinted Julia 0.7 and 1.0 to be identical. This means programs that are running on Julia 0.7, will work exactly the same on 1.0 without any warnings. The release time for Julia 1.0 is expected to be short after Julia 0.7. Julia 0.7 is said to be stable and production ready, but the community advised to keep the deprecations of features in mind. Additionally, when developers upgrade to Julia 1.0, they will have to run the tests and use cases all over again. Basics of Programming in Julia Computer vision is expanding quickly. Here’s why. Visual Studio 2019: New features you should expect to see
Read more
  • 0
  • 0
  • 2463
article-image-att-combines-with-google-cloud-to-deliver-cloud-networking-at-scale
Gebin George
01 Jun 2018
2 min read
Save for later

AT&T combines with Google cloud to deliver cloud networking at scale

Gebin George
01 Jun 2018
2 min read
AT&T partners with Google cloud to deliver cloud networking solutions for enterprise customers using Partner Interconnect solution. This new offering enables customers to use ATT NetBond and connect to Google Cloud Platform in a secure way. Businesses can also connect to Google Cloud via Cloud VPN. Chief product officer at ATT, Roman Pacewicz said “ We're committed to helping businesses transform through our edge-to-edge capabilities. This collaboration with Google Cloud gives businesses access to a full suite of productivity tools and a highly secure, private network connection to the Google Cloud Platform.” Paul Ferrand, President Global Customer Operations, Google Cloud said “ AT&T provides organizations globally with secure, smart solutions, and our work to bring Google Cloud's portfolio of products, services and tools to every layer of its customers' business helps serve this mission. Our alliance allows businesses to seamlessly communicate and collaborate from virtually anywhere and connect their networks to our highly-scalable and reliable infrastructure” ATT is also offering access to G-suite, Google’s cloud-based productivity suite which includes Gmail, Docs and Drive available via ATT Collaborate. Using Cloud Partner interconnect, it facilitates private connectivity to Google Cloud and helps them run multiple workloads across different cloud environment. It also allows centres that are located far away from a Google Cloud region or point of presence to connect at up to 10Gbps. Additionally, since G Suite is there with AT&T Collaborate, enterprises have access to a single source for chat, voice, video and desktop sharing. Businesses can also enable carrier-grade voice reliability and security from within the G Suite applications.It can also be used across practically any device from any location. Google Compute Engine Plugin makes it easy to use Jenkins on Google Cloud Platform How to Run Hadoop on Google Cloud – Part 1 Google announces Cloud TPUs on the Cloud Machine Learning Engine (ML Engine)
Read more
  • 0
  • 0
  • 1933

article-image-this-week-on-packt-hub-25-may-2018
Aarthi Kumaraswamy
25 May 2018
3 min read
Save for later

This week on Packt Hub – 25 May 2018

Aarthi Kumaraswamy
25 May 2018
3 min read
Here is this week's newsletter showcasing a select set of news stories, interviews, analyses and tutorials along with special content curated from the web. If you like what you see, make sure to subscribe and tell others too. Here’s what you may have missed in the last 7 days – Tech news, insights and tutorials… Featured interview “Tableau is the most powerful and secure end-to-end analytics platform” - Joshua Milligan This week we interviewed Joshua Milligan, Tableau Zen Master and the best selling author of the book, Learning Tableau. In this insightful interview, Joshua explains why Tableau is the Google of data visualization. He explores what's possible in Tableau like Geospatial analysis and automating workflows, what the exciting new features such as Hyper, Tableau Prep mean for BI developers, among other topics. Tech news Conferences/Events in focus this week What the PSF & Jetbrains 2017 Python Developer Survey reveals Five developer centric sessions at IoT World 2018 F8 AR Announcements What we learned at the ICRA 2018 conference for robotics & automation Data news in depth Amazon is selling facial recognition technology to police PostgreSQL 11 Beta 1 is out! Google announces Cloud TPUs on the Cloud Machine Learning Engine (ML Engine) TensorFlow.js 0.11.1 releases! Development & programming news in depth Microsoft introduces SharePoint Spaces, adds virtual reality support to SharePoint Qt 5.11 has arrived! Adobe is going to acquire Magento for $1.68 Billion Typescript 2.9 release candidate is here CRYENGINE 5.5 preview 3 goes live! Cloud & networking news in depth Kubernetes Containerd 1.1 Integration is now generally available Introducing OpenStack Foundation’s Kata Containers 1.0 Other News What matters on an engineering resume? Hacker Rank report says skills, not certifications Partnership alliances of Kontakt.io and IOTA Foundation for IoT and Blockchain Tutorials Data tutorials How to use M functions within Microsoft Power BI for querying data Development & programming tutorials Development tutorials Testing Single Page Applications (SPAs) using Vue.js developer tools How to Scaffold a New module in Odoo 11 Build powerful progressive web apps with Firebase How to integrate Firebase with NativeScript for cross-platform app development Build an ARCore app with Unity from scratch Working with Unity Variables to script powerful Unity 2017 games How to use Bootstrap grid system for responsive website design? Programming tutorials Documenting RESTful Java Web Services using Swagger Regular expressions in AWK programming: What, Why, and How Other tutorials How to create and configure an Azure Virtual Machine Getting started with Digital forensics using Autopsy How to build an Arduino based ‘follow me’ drone This week’s opinions, analysis, and insights Data Insights Top 7 libraries for geospatial analysis Introducing Dask: The library that makes scalable analytics in Python easier Facebook’s Wit.ai: Why we need yet another chatbot development framework? Top 5 tools for reinforcement learning Development & Programming Insights Is web development dying? Top 5 open source static site generators AI for game developers: 7 ways AI can take your game to the next level   Other Insights Abandoning Agile SDLC puts process at the center of software engineering ERP tool in focus: Odoo 11 12 common malware types you should know Anatomy of a Crypto Ransomware What else happened in May? Last Week on Packt Hub - 18 May 2018 That week on Packt Hub – 11 May 2018 That week on Packt Hub – 4 May 2018  
Read more
  • 0
  • 0
  • 1426

article-image-this-week-on-packt-hub-27-april-2018
Aarthi Kumaraswamy
27 Apr 2018
4 min read
Save for later

This week on Packt Hub – 27 April 2018

Aarthi Kumaraswamy
27 Apr 2018
4 min read
  This week continues to see discussions around GDPR, major updates for Tableau, MySQL, Bootstrap and Salesforce in tech news this week. See why Hadoop is dying, learn about Mob programming, Hybrid apps, Progressive web apps, and more from this week’s insights. Build an ARCore app in Android, learn advanced Rust programming, see how data scientists test hypothesis, and more in this week’s tutorials. Here’s what you may have missed in the last 7 days – Tech news, insights and tutorials… Featured Interview “Pandas is an effective tool to explore and analyze data”: An interview with Theodore Petrou In this exciting interview, Ted Petrou, author of Pandas Cookbook, takes us through an insightful journey into pandas – Python’s premier library for exploratory data analysis and tells us why it is the go-to library for many data scientists to discover new insights from their data. Ted is a data scientist and the founder of Dunder Data, a professional educational company focusing on exploratory data analysis. Tech news Bulletins Data science news bulletin – Monday 23 April Web Development news bulletin – Tuesday 24 April Cybersecurity news bulletin – Wednesday 25 April Programming news bulletin – Thursday 26 April Data news in depth Microsoft Cloud Services get GDPR Enhancements Tableau 2018.1 brings new features to help organizations easily scale analytics [Editor’s Pick] MySQL 8.0 is generally available with added features Development & programming news in depth Salesforce Spring 18 – New features to be excited about in this release! JetBrains ReSharper Ultimate 2018.1 is readily available for download Get ready for Bootstrap v4.1; Web developers to strap up their boots Cloud & networking news in depth Google’s kaniko – An open-source build tool for Docker Images in Kubernetes, without a root access AWS SAM (AWS Serverless Application Model) is now open source Everything you need to know about Jenkins X, the new cloud-native CI/CD solution on Kubernetes [Editor’s Pick] Tutorials Interested in becoming a data scientist? This week’s tutorials focus on getting you started in this field using some of the most popular tools like TensorFlow and R. Interested in Web development? Learn to Build a real-time dashboard with Vue.js, master data bindings with Knockout.js and more this week. Perhaps, you’re into mobile and game development. Now is a good time to know how to build an ARCore app on Android. Data tutorials How to Debug an application using Qt Creator [Editor’s Pick] Setting up Logistic Regression model using TensorFlow How data scientists test hypotheses and probability [Editor’s Pick] Using R6 classes in R to retrieve live data for markets and wallets  Development & programming tutorials Web development tutorials How to build a chatbot with Microsoft Bot framework How to deploy a Node.js application to the web using Heroku Building a real-time dashboard with Meteor and Vue.js Building a Web Service with Laravel 5 Data bindings with Knockout.js [Editor’s Pick] Game and Mobile development tutorials How to create non-player Characters (NPC) with Unity 2018 Build a Virtual Reality Solar System in Unity for Google Cardboard Getting started with building an ARCore application for Android [Editor's Pick] Programming tutorials How to dockerize an ASP.NET Core application Perform Advanced Programming with Rust [Editor’s Pick] Other Tutorials How to run Lambda functions on AWS Greengrass Creating and deploying an Amazon Redshift cluster How to run and configure an IoT Gateway This week’s opinions, analysis, and insights Learn all about MYSQL performance benchmarks, what is active learning, what are hybrid apps, what is mob programming and more in this week’s insights. Data Insights Top 10 MySQL 8 performance benchmarking aspects to know [Editor’s Pick] Why is data science important? Why is Hadoop dying? [Editor’s Pick] Active Learning: An approach to training machine learning models efficiently Development & Programming Insights Google ARCore is pushing immersive computing forward Hybrid Mobile apps: What you need to know 20 ways to describe programming in 5 words [Just for laughs] What is Mob Programming? [Editor’s Pick] 5 reasons why your next app should be a PWA (progressive web app) [Editor’s Pick] Other Insights Top 7 DevOps tools in 2018 Top 5 penetration testing tools for ethical hackers  
Read more
  • 0
  • 0
  • 1752
article-image-jetbrains-resharper-ultimate-2018-1-is-readily-available-for-download
Pavan Ramchandani
23 Apr 2018
2 min read
Save for later

JetBrains ReSharper Ultimate 2018.1 is readily available for download

Pavan Ramchandani
23 Apr 2018
2 min read
ReSharper is one of the leading productivity tools from JetBrains. It is integrated with Visual Studio and provides enhancement and automation for .NET project development. JetBrains announced the general availability of ReSharper 2018.1, making it the first important release for this year. One of the major improvement speculated was the support for C# 7.2. JetBrains have finalized the support by adding all the entities that are specifically part of C# 7.2. This will ensure that the code written with latest C# modifiers and operators does not throw an error in ReSharper. Additionally, there are significant bug fixes made to this release. One of the improvements that Jetbrains highlighted in the release, is the Navigation. ReSharper 2018.1 has tools to better filter the search string and provide a better overview of the members of the code. Major additions in ReSharper Ultimate: Debug Step Filters in ReSharper C++ helps you in search related to functions while debugging. Include Analyzer helps with managing dependencies in the header files while compilation. Easy navigation with Analysis Subject panel in dotMemory 2018.1. The redesigned continuous testing mode in dotCover 2018.1 can be made to run in the existing unit test session instead of running another continuous test session. Console runner redesigned for dotCover 2018.1 helps giving coverage analysis for web applications running on IIS server. Code formatting engine has been improved to avoid problems related to indenting, line breaks, spaces, etc. Code formatting problems can be rectified in the code editor itself. Update in managing StyleCop rules directly from StyleCop configuration files. StyleCop analyzes the C# code for style and consistency throughout the development. This update will enhance consistency in code styling for C# developers. Other handy features to make developer's life simple are: Pre-/Post- build support for ReSharper Build engine A new option, known as Remember last search for navigation New settings for parentheses in function declaration and wrapping LINQ expressions ReSharper 2018.1 redefines the code navigation and enhances development with C# 7.x version. Also, improvements in unit testing in ReSharper will certainly catch attention for this release. Latest ReSharper Ultimate 2018.1 is available for download from the official JetBrains website.  
Read more
  • 0
  • 0
  • 3793

article-image-10-predictable-findings-stack-overflow-2018-survey
Richard Gall
27 Mar 2018
4 min read
Save for later

10 predictable findings from Stack Overflow's 2018 survey

Richard Gall
27 Mar 2018
4 min read
Stack Overflow’s 2018 survey has just been released. It contains some great insights into the way developers live and work. It’s also confirmed plenty of things that have been commonplaces in the tech industry. So, here are the 10 most predictable findings from this year’s survey... JavaScript is the most popular programming language We probably shouldn’t be surprised - JavaScript has come out as the most popular language in the Stack Overflow survey since 2013. And with JavaScript now cemented as the foundational language of the web, it’s unlikely we’re going to see it knocked off its perch any time soon. With the growth of tools like NodeJS extending JavaScript’s capabilities, it’s only going to consolidate its position further. Developers are on Stack Overflow all the time This is a pretty comforting stat for the team at Stack Overflow - they’re the go-to home of almost everyone that works with code on the planet. 32.5% of respondents claimed they check Stack Overflow ‘daily or almost daily’, 31% check it multiple times a day. A further 22% check the site at least once a week. Developers are self-taught and write code outside of work This is something we’re well aware of at Packt - developers are autodidacts. That’s probably partly the nature of working with software that can be so changeable and the nature of developers themselves - curious and exploratory. 86.7% of survey respondents taught themselves a new language, tool or framework outside of any formal setting. The fact that formal education is so rarely sought or provided for explains the fact that so many developers write code outside of work. Stack Overflow’s 2018 survey reports than more than 80% of developers code as a hobby. Git is easily the most popular version control tool This was a sure thing - and the survey stats prove it. 87.2% of respondents reported Git as their version control tool of choice. Despite murmurs online that it’s unnecessarily complicated (the search suggestion next to ‘why is Git so popular’ is ‘why is Git so complicated’), thanks to its powerful scalable features and, of course, the dominance of GitHub in the lives of technical people, it’s become a core part of developer life. Python is the fastest growing programming language on the planet We know just how popular Python is at Packt. We joke that we should just be the Python Publishing Company. This year it has risen above C#, after last year rising above PHP. Where will its rise end? Or, as more and more people need to write code, will it become the de facto language of technology-powered professionals? TensorFlow is getting lots of love TensorFlow was 2018’s most loved tool with more than 73% of developers using it expressing a great deal of enthusiasm for it. Clearly its delivering on its tagline: ‘machine learning for everyone’. React is the most in-demand tool If TensorFlow is the most loved tool, we also weren’t that surprised to see that React is massively in demand. 21.3% of developers who don’t currently use it expressed an interest in using it. Node.js was in second place with 20.9%. The love for TensorFlow must be getting out there as that came in third here, with 15.5% of respondents interested in developing with it. People hate using Visual Basic It’s not hard to find someone complaining about Visual Basic online. The ecosystem is widening, and there are far more attractive options for developers out there. Microsoft are even self-consciously changing their strategy with VB, as this post from last year outlines. Stack Overflow reports that this is the third year in a row that Visual Basic has come out as the ‘most dreaded’ programming language, meaning people using it ‘express no interest in doing so’. Job churn is a fact of life in tech 34.6% of survey respondents changed jobs less than a year ago. A further 22% changed jobs between 1 and 2 years ago. Like technology itself, change is a constant in the lives of many developers - for better and worse. Agile and Scrum are the most popular software development methodologies No surprises here - these methodologies have become embedded in the everyday practices of millions of developers.
Read more
  • 0
  • 0
  • 4770

article-image-isolated-mediawiki-setup-raspberry-pi-using-docker-part-1
Felix Rabe
18 May 2015
4 min read
Save for later

Isolated MediaWiki Setup on the Raspberry Pi using Docker, Part 1

Felix Rabe
18 May 2015
4 min read
This blog series shows you how to use Docker on the favorite Raspberry Pi distribution, Raspbian, to get MediaWiki set up and running. Raspberry Pi is a great little platform for hardware experimentation. Docker is a virtualization platform that runs Linux containers instead of VM images, and thus is small and fast – just the right size and speed for a Raspberry Pi. Combining the two is great for throw-away experiments and application setups consisting of multiple parts that are better kept apart ("multi-tier" applications). Whereas without Docker, these experiments and setups would require a complete re-installation of the operating system before and/or after each experiment, with Docker, each experiment starts from a pristine state every time. What you need It does not take much to follow along: A Raspberry Pi, Model B or B+ and some accessories: Ethernet cable USB cable (attached to a 5V power source) An SD card (at least 2 GB are required for the steps shown here) and a device to write to it An Internet connection accessible via Ethernet, such as your Wi-Fi router Raspbian with Docker A Raspberry Pi runs its operating system from its SD card. Usually, this is provided as a big image file that must be downloaded upfront, but the wonderful raspbian-ua-netinst project provides an alternative, where a small up-front image download makes the Raspberry Pi automatically download and install an up-to-date Raspbian system. I've forked the net installer to include Docker 1.2.0 so it is ready to go after the unattended installation. You can download a pre-built image file from here, or build the image manually in the following section. Build the image file manually The source code is available on GitHub. If you have Docker and Git (and Bash) installed on your computer, you can build the image using the following code: git clone https://github.com/felixrabe/raspbian-ua-netinst.git cd raspbian-ua-netinst git checkout packt ./autobuild-docker.sh tar -xf raspbian-ua-netinst-output.tar The image is in raspbian-ua-netinst-output/, and the various formats are equivalent. How to put the image on the SD card The Raspberry Pi Documentation website has fine guides on how to write the image to an SD card. It boils down to something like the following (on Linux): lsblk # find the device bzcat raspbian-ua-netinst*.img.bz2 > /dev/mmcblk0 Of course, be very careful that you target the right device and that it does not contain any valuable data, as this command will erase everything. Boot Once you have the image on the card, plug it into your Raspberry Pi, attach the Ethernet cable, and power it up by plugging in the USB cable. If all goes well, you will have a small working Raspbian distribution about 20 to 25 minutes later. (These were the times I observed on a 10 MBit/s connection.) Where is my Pi? To find the address of your Raspberry Pi, you can run nmap:    sudo nmap -sn 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}' In this command, you might have to change the 192.168.1.0/24 part, which describes the network to scan. The awk command will then print the IP address that belongs to a Raspberry Pi MAC address, as all Raspberry Pi MACs start with the vendor identification B8:27:EB. Log in to the Raspberry Pi Using the address found above now allows you to log into the Raspberry Pi: ssh -l root <ip_of_raspberry_pi> # Password: raspbian Once you've reached the root@pi:~# prompt, enter the Docker version to validate that the Docker client and server are running properly. This should give you something like the following output: root@pi:~# docker version Client version: 1.2.0 Client API version: 1.14 Go version (client): go1.3.1 Git commit (client): fa7b24f OS/Arch (client): linux/arm Server version: 1.2.0 Server API version: 1.14 Go version (server): go1.3.1 Git commit (server): fa7b24f By the way, if you ever want to properly shut down the Raspberry Pi, you can do so by using: systemctl powerof Don't do it now though, since we are not done yet! Summary Now that we have Docker working on our Raspberry Pi, let’s see what we can do with it in Part 2. Want more Docker content? Find more tutorials and insight on our dedicated page.  About the author Felix Rabe has been programming and working with different technologies and companies at different levels since 1993. Currently he is researching and promoting Named Data Networking, an evolution of the Internet architecture that currently relies on the host-bound Internet Protocol.
Read more
  • 0
  • 0
  • 3022

article-image-moving-foundational-advanced-visualizations
Packt
16 Apr 2015
38 min read
Save for later

Moving from Foundational to Advanced Visualizations

Packt
16 Apr 2015
38 min read
This article is written by Joshua N. Milligan, the author of Learning Tableau. You are now ready to set out on a journey of building advanced visualizations! "Advanced" does not necessarily mean difficult. Tableau makes many of these visualizations easy to create. Advanced also does not necessarily mean complex. The goal is to communicate the data, not obscure it in needless complexity. (For more resources related to this topic, see here.) Instead, these visualizations are advanced in the sense that you will need to understand when they should be used, why they are useful, and how to leverage the capabilities of Tableau to create them. Additionally, many of the examples introduce some advanced techniques, such as calculations, to extend the usefulness of foundational visualizations. Most of the examples in this article are designed so that you can follow along. However, don't simply memorize a set of instructions. Instead, take time to understand how the combinations of different field types you place on different shelves change the way headers, axes, and marks are rendered. Experiment and even deviate from the instructions from time to time just to see what else is possible. You can always use Tableau's back button to return to following the example! Visualizations in this article will fall under these major categories: Comparison Dates and times Parts of the whole Distributions Multiple axes You may notice the lack of a spatial location or geographic category in the preceding list. Comparing values across different dimensions Often, you will want to compare the differences of measured values across different dimensions. You might find yourself asking questions like these: How much profit did I generate in each department? How many views did each of my websites get? How many cases did each doctor in the hospital treat last year? In each case, you are looking to make a comparison (among departments, websites, or doctors) in terms of some quantitative measurement (profit, number of views, and the count of cases). Bar charts Here is a simple bar chart created using the Superstore Sales data source: The sum of sales is easily compared for each category of item sold in the chain of stores. Category is used as a discrete dimension in the view, which defines row headers (because it is discrete) and slices the sum of sales for each category (because it is a dimension). Sales defines an axis (because it is continuous) and is summed for each category (because it is a measure). Note that the bar chart is sorted with the category that has the highest sum of sales at the top and the lowest at the bottom. Sorting a bar chart adds a lot of value to the analysis because it makes it easy to determine rank. For example, it is easy to see that Bookcases has more total sales than Computer Peripherals even though the bar lengths are close. Were the chart not sorted, it may not have been as obvious. You can sort a view in multiple ways: Click on one of the sort icons on the toolbar. This results in automatic sorting of the dimension based on the measure that defined the axis. Changes in data or filtering that result in a new order will be reflected in the view. Click on the sort icon on the axis. This will also result in automatic sorting. Use the dropdown on the active dimension field and select Sort.... You can also select Clear Sort to remove any sorting. Drag and drop row headers to manually rearrange them. This results in manual sorting that does not get updated. Any of these sorting methods are specific to the view and will override any default sort you defined in the metadata. Bar chart variations A basic bar chart can be extended in many ways to accomplish various objectives. Consider the following variations: Showing progress toward a goal Highlighting a single category Bullet charts – showing progress toward a goal Let's say you are a global manager and you've set the following profit targets for your regional managers: Region Profit target Central 600,000 East 350,000 South 100,000 West 300,000 You maintain these goals in a spreadsheet and might like to see a visualization that shows you how actual profit compares with your goals. Continue with the connection to the Superstore Sales data and follow these steps to see a couple of options: You will find a Profit Targets connection containing this data. The data is also located in a text file in the ResourcesData directory. Using the Superstore Sales connection, create a basic bar chart showing the sum of profit per region. Select the Profit Targets connection and click to highlight the Profit Target field in the Data window. Open Show Me and select the bullet graph. At this point, Tableau has created a bullet graph using the fields in the view and the Profit Target field you had selected. You'll observe that the Reference field has been used in the data blend to link the two data sources and it is already enabled because the Region field was used in the view. Unfortunately, Show Me placed Profit Target on Columns and placed Profit in the Level of Detail field and used it for reference lines. The bars show the target and the reference line shows the actual value. This is the reverse of what you want. To correct it, right-click on the Profit Target axis and select Swap Reference Line fields. You now have a bullet chart showing the actual profit compared to the target. Rename this worksheet Bullet Chart. Now, you can clearly see that your Central region manager is falling short of the goal you set. Bullet graphs make use of reference lines. For now, right-click on the axis and select Edit Reference Line, Band or Box to explore this feature. The bar-in-bar chart Another way to show the progress toward a goal is to use bar-in-bar charts, such as this: To create this view, continue in the same workbook and follow these steps: Duplicate the Bullet Chart sheet you created (right-click on the sheet tab and select Duplicate Sheet). Drag the Profit Target field from the Marks card and drop it directly onto the axis. As you are dropping one measure (Profit Target) onto the same space (in this case, an axis) that was being used by another measure (Profit), Tableau substituted the special fields' Measure Names and Measure Values. Any time you want two or more measures to share the same space within a view, you can use Measure Names and Measure Values. Measure Names is a special dimension field that Tableau adds to every data source; it is a placeholder for the names of measures. You can place it in the view anywhere you would place another dimension. Measure Values is a special measure field that Tableau adds to every data source; it is a placeholder for the values of other measures. You can use it in any way you would use any other measure. When these special fields are in use, you will see a new Measure Values shelf in the workspace. This shelf contains all the measures that are referenced by Measure Names and Measure Values. You can add and remove measures to and from this shelf as well as rearrange the order of any measures on the shelf. You can drag and drop the Measure Names and Measure Values fields directly from the Data window into the view. Many times, it is easy to remember that if you want two or more measures to share the same space, simply drag and drop the second onto the same space that is occupied by the first. For example, if you want multiple measures to define a single axis, drag and drop the second measure to the axis. If you want two or more measures to occupy the pane, drop the second onto the pane. Move the Measure Names field to the Color shelf and edit the colors in the legend (double-click on the legend or use the drop-down arrow on the legend) and set Profit to Orange and Profit Target to Gray). You now have a stacked bar chart with a different color for each measure name being used. Copy the Measure Names field from Color to the Size shelf (hold Ctrl while you drag a field in the view and drop it on another shelf in the view). This creates different sizes for each bar segment. Tableau's default is to stack bar marks. In this case, you do not want the bars to be stacked. Instead, you want them to overlap. To change the default behavior, from the menu, navigate to Analysis | Stack Marks | Off. Rename the worksheet to Bar-in-Bar. Highlighting a single category Let's say one of your primary responsibilities at the superstore is to monitor the sales of tables. You don't necessarily care about the details of other categories, but you do want to keep track of how tables compare with other categories. You might design something like this: Now, you will be able to immediately see where tables are compared to other categories as sales figures change day to day. To create this view, follow these steps: Place Category on Columns and SUM(Sales) on Rows. Sort the bar chart in descending order. Create a calculated field from the menu by navigating to Analysis | Create Calculated Field…. For now, name the calculation Category is Table? and enter the [Category] = "Tables" code. This calculation tests the equality and returns true if the value of the Category field is "Tables" and false otherwise. When you click on OK in the Calculated Field dialog, a new field named Category is Table? will appear as a new dimension. Drag and drop this field onto the Color shelf. Edit the color palette by either double-clicking on the color legend or locating the drop-down caret in the upper-right section of the legend and selecting Edit from the drop-down menu. Make the False value a light gray. You can fine-tune any color and select colors that are not included in a standard palette by double-clicking on the desired value under Select Data Item in the Edit Colors dialog. Hide the column headers for the Category field using the drop-down active field menu and unchecking Show Headers. As all you care about is how tables relate to other categories and don't specifically care what the other categories are, this will clean up the chart and allow you to focus on what's important. You can add an annotation by right-clicking on the bar and selecting Annotate | Mark.... Annotations can be used to display values of data and freeform text to draw attention or give explanation. There are three kinds of annotations in Tableau: Mark, Point, and Area. Mark annotations are associated with a specific mark (such as a bar or a shape) in the view. The annotation can display any data associated with the mark. It will be shown in the view as long as that mark is visible. Point annotations are associated with a specific point, as defined by one or more axes in the view. The annotation can display values that define the X and/or Y location of the point. This will be shown in the view as long as the point is visible. Area annotations are associated with an area in the view. They are typically shown when at least part of the defined area is visible. Rename the current sheet Highlight Single Value. Visualizing dates and times Often in your analysis, you will want to understand when something happened. You'll ask questions like these: When did we gain the most new customers? What time of the day has the highest call volume? What kinds of seasonal trends do we see in sales and profit? Fortunately, Tableau makes this kind of visual discovery and analysis easy. The built-in date hierarchy When you are connected to a flat file, relational, or extracted data source, Tableau provides a robust built-in date hierarchy for any date field. Cubes/OLAP connections do not allow Tableau hierarchies. You will want to ensure that all date hierarchies and date values you need are defined in the cube. To see this in action, continue with the visualization workbook and create a view similar to the one shown in the following screenshot by dragging and dropping Sales to Rows and Order Date to Columns: Note that even though the Order Date field is a date, Tableau defaulted to showing sales by year. Additionally, the field on Columns has a + icon, indicating that the field is part of a hierarchy that can be expanded. When you click on the + icon, additional levels of the hierarchy are added to the view. Starting with Year, this includes Year, Quarter, Month, and Day. When the field is a date and time, you can further drill down into Hour, Minute, and Second. Any of the parts of the hierarchy can be moved within the view or removed from the view completely. You may specify how a date field should be used in the view by right-clicking on the date field or using the drop-down menu and selecting various date options. As a shortcut, you can right-click and drag drop a date field into the view to get a menu of options for how the date field should be used prior to the view being drawn. The options for a date field look like this: The three major ways a date field can be used are: Date Part: The field will represent a specific part of the date, such as Quarter or Month. The part of the date is used by itself and without reference to any other part of the date. This means that a date of November 8, 1980, when used as a month date part, is simply November: In this view, the bar for November represents the sum of sales for all November months regardless of the year or day. Date Value: The field will represent a date value but rolled up or truncated to the level you select. For example, if you select a date value of Month, then November 8, 1980 gets truncated to the month and year and becomes November 1980. This view, for example, includes a bar for the sum of sales for November 2012 and another bar for November 2013. All individual dates within the month have been rolled up, so sales for November 1, 2013 and November 11, 2013 are all summed under November 2013. Exact Date: The field represents the exact date value (including the time, if applicable) in the data. This means that November 8, 1980 2:01 a.m. is treated as distinct from November 8, 1980 3:08 p.m. It is important to note that nearly any of these options can be used as discrete or continuous fields. Date parts are discrete by default. Date values and exact dates are continuous by default. However, you can switch them between discrete and continuous as needed to allow flexibility in the visualization. For example, you must have an axis (and thus, a continuous field) to create a reference line. Also, Tableau will only connect lines at the lowest level of row or column headers. Using a continuous date value instead of multiple discrete date parts will allow you to connect lines across multiple years, quarters, and months. Variations in date and time visualizations The ability to use various parts and values of dates and even mix-and-match them gives you a lot of flexibility to create unique and useful visualizations. For example, using the month date part for columns and the year date part for color gives a time series that makes the year-over-year analysis quite easy. The year date part has been copied to Label so that the lines could be labeled. Clicking on any of the shelves on the Marks card will give you a menu of options. Here, Label has been clicked and the label was adjusted so that it is displayed only at the start of each line. Here is another example of using date parts on different shelves to achieve useful analysis. This kind of visualization can be quite useful when looking at patterns across different parts of time, such as hours in a day or weeks in a month. This view shows you the sum of sales for the intersection of each day and each month. Year has not been included in the view, so this is an analysis of all years in the data and allows us to see whether there are any seasonal patterns or "hot spots". Observe that placing a continuous field on the Color shelf resulted in Tableau completely filling each intersection of row and column with the shade of color that encoded the sum of sales. Clicking on the Color shelf gives some fine-tuning options. Here, a white border has been added to help distinguish each cell. Gantt charts Gantt charts can be incredibly useful to understand any series of events with duration, especially if these events have some kind of relationship. Visually, they are very useful to determine whether certain events overlap, have dependency, or are longer or shorter than other events. For example, here is a Gantt chart that shows a series of processes, some of which are clearly dependent on others: Gantt charts can be created fairly easily in Tableau. Tableau uses the Gantt mark type that places a Gantt bar starting at the value defined by the field defining the axis. The length of the Gantt bar is set by the field on the Size card. Let's say you want to visualize the time it takes from an order being placed to the time the order is shipped. You might follow steps similar to these: Place Order Date on Columns as Exact Date or as a Day value. Note that Tableau defaults the marks to Gantt bars. Place Order ID on Rows. If you receive a warning that there are many members of the dimension, select Add all Members. The result is a row for each order. The Gantt bar shows you the date of the order. When creating Gantt charts, you will want to include dimensions in the view that give you a meaningful level of detail so that you can see each event of interest. If you are not careful, you could aggregate durations improperly or overlap Gantt marks, resulting in a false representation of data. Filter the view for December 2013. Accomplish this by dragging and dropping the Order Date field on the Filters shelf. Select the Month / Year option and then choose the single month and year from the list. The length of the Gantt bar is set by placing a field with a value of duration on the Size shelf. There is no such field in this dataset. However, we have the Ship Date option and we can create a calculated field for the duration. For now, select Analysis from the menu and click on Create Calculated Field…. Name the field Time to Ship and enter the following code: DATEDIFF('day', [Order Date], [Ship Date]) When using a date axis, the length of Gantt bars always needs to be in terms of days. If you want to visualize events with durations that are measured in hours or seconds, avoid using the 'day' argument for DATEDIFF because it computes whole days and loses precision in hours and seconds. Instead, calculate the difference in hours or seconds and then convert it to days. The following code converts the number of seconds between a start and end date and then divides it by 86,400 to convert the result into days (including fractional parts of the day): DATEDIFF('second', [Start Date], [End Date]) / 86400 The new calculated field should appear under Measures in the Data window. Drag and drop the field onto the Size shelf. You now have a Gantt chart showing when orders were placed. There is, however, one problem. Some orders include more than one item and you are showing the sum of days to ship. This means that if one item took 5 days to ship and another item in the same order took 7 days, the length of the bar shows 12 days for the order. If both items took 5 days and were shipped at the exact same time, the length of the bar indicates 10 even though the order really only took 5 days. To correct this, decide whether you want to show the minimum number of days or the maximum number of days for each order, right-click on the Days to Ship field on the Marks card, or use the drop-down menu and navigate to Measure | Minimum or Measure | Maximum. Alternately, you might decide to add Item to the Detail card of the Marks card. Your final view should look something like this: Often, you'll want to sort a Gantt chart so that the earliest start dates appear first. Do this via the drop-down menu of the dimension on Rows and select Sort. Sort it in ascending order by the minimum of the date field. Relating parts of the data to the whole As you explore and analyze data, you'll often want to understand how various parts add up to a whole. For example, you'll ask questions like these: How many patients with different admission statuses (in-patient, out-patient, observation, or ER) make up the entire population of patients in the hospital? What is the percentage of total national sales made in each state? How much space does each file, subdirectory, and directory take on my hard disk? These types of questions ask about the relationship between the part (patient type, state, or file/directory) and the whole (the entire patient population, national sales, and hard disk). There are several types of visualizations and variations that can aid you in your analysis. Stacked bars It is difficult to compare values across categories for any but the bottom-most bar (for vertical bars) or the left-most bar (for horizontal bars). The other bar segments have different starting points, so lengths are much more difficult to compare. In this case, however, we are using stacked bars to visually understand the makeup of the whole. We are less concerned with a visual comparison across categories. Say a bank manager wants to understand the makeup of her lending portfolios. She might start with a visualization like this: This gives a decent view of the makeup of each portfolio. However, in this case, the bank manager already knows that the bank has more balance in first-mortgage loans than fixed second loans. However, she wants to understand whether the relative makeup of the portfolios is similar; specifically, do the High Risk balances constitute a higher percentage of balances in any portfolio? Consider this alternative: None of the data has changed, but the bars now represent the percent age of the total of each portfolio. You can no longer compare the absolute values, but comparing the relative breakdown of each portfolio has been made much easier. The bank manager may find it alarming that nearly 25 percent of the balance of HELOC loans is in the high-risk category when the bar segment looked fairly small in the first visualization. Creating this kind of visualization is relatively easy in Tableau. It involves using quick table calculations, but it only takes a few clicks to implement. Continuing with the Advanced Visualizations workbook, follow these steps: Create a stacked bar chart like what is shown in the following screenshot with Department on Rows, Shipping Cost on Columns, and Ship Mode on Color. Duplicate the Shipping Cost field on Columns either by holding Ctrl while dragging the Shipping Cost field from Columns to Columns, immediately to the right of its current location, or by dragging and dropping it from the Data window to Columns. At this point, you have two Shipping Cost axes that, in effect, duplicate the view. Using the drop-down menu of the second Shipping Cost field, navigate to Quick Table Calculation | Percent of Total. This table calculation runs a secondary calculation on the values returned from the data source to compute a percent of the total. You will need to further specify how that total should be computed. Using the same drop-down menu, navigate to Compute Using | Table (Across). This tells Tableau to compute the table calculation across the table, which in this case means that the values will add up to 100 percent for each department. Turn on labels by clicking on the Abc button on the top toolbar. This turns on default labels for each mark. As you've already seen, you can customize labels by dropping a field on the Label shelf and fine-tune it further by clicking on the shelf. Right-click on the second axis, which is now labeled % of Total Shipping Cost and select Edit Axis…. Then, set Range as Fixed from 0 to 1. In this case, you know the total will always be 100%, so fixing the axis from 0 to 1 allows Tableau to draw the bars all the way across. Treemaps Treemaps use a series of nested rectangles to represent hierarchical relationships of parts to whole. Treemaps are particularly useful when you have hierarchies and dimensions with high cardinality (a high number of distinct values). Here is an example of a treemap that shows you how the sales of each item add up to give the total sales by category, then department, and finally, the total sales overall. Profit has been encoded by color to add additional analytical value to the visualization. It is now easy to pick out items with negative profit that have relatively high sales when placed in the context of the whole: Treemaps, along with packed bubbles, word clouds, and a few other chart types, are called non-Cartesian chart types. This means that they are drawn without an x or y axis and do not even require row or column headers. To create a treemap, you simply need to place a measure on the Size shelf and a dimension on the Detail shelf. You can add additional dimensions to the level of detail to increase the detail of the view. You can quickly change a treemap into a word cloud or a packed bubble chart by changing the mark type from Automatic (which is Square) to Circle (for packed bubbles) or Text (for word clouds). The order of the dimensions on the Marks card defines the way the treemap groups the rectangles. Additionally, you can add dimensions to rows or columns to slice the treemap into multiple treemaps. Effectively, the end result is a bar chart of treemaps! The following is an example: The treemap in the preceding screenshot not only demonstrates the ability to have multiple rows (or columns) of treemaps, but it also demonstrates the technique of placing multiple fields on the Color shelf. This can only be done with discrete fields. You can assign two or more colors by holding the Shift key while dropping the second field on the color. Alternately, the icon or space to the left of each field on the Marks card can be clicked on to change which shelf is used for the field. Area charts You might think of an area chart as a line chart in which one line is drawn with the area under it filled. Subsequent areas are stacked on top. As an example, consider a visualization of delinquent loan balances being analyzed by the bank manager: This area chart shows you the delinquent balance over time. Each band represents a different severity of delinquency. In many ways, the view is aesthetically pleasing, but it suffers from some of the same weaknesses as the stacked bar chart. As all but the bottom band have different starting locations month to month, it is difficult to compare the bands between months. For example, it is obvious that there is a spike in delinquent balances in September. But is it in all bands? Or is one of the lower bands pushing the higher bands up? Which band has the most significant spike? Now, consider this similar view: This view uses a quick table calculation similar to the stacked bars. It makes it clearer that the percent age of balance within the 31 to 60 days delinquent range increased in September. However, it is no longer clear that September represents a spike in balances. If you were telling a story with this data, you would want to carefully consider what either visualization might represent or misrepresent. Creating an area chart is fairly simple. Simply create a line chart or time series as you did previously, and then change the mark type on the Marks card to Area. Any dimensions on the Color, Label, or Detail shelves will create slices of area that will be stacked on top of each other. The Size shelf is not applicable to an area chart. You can define the order in which the areas are stacked by changing the sort order of the dimensions on the shelves of the Marks card. If you have multiple dimensions defining slices of area, you can also rearrange them on the Marks card to further adjust the order. Pie charts Pie is actually a mark type in Tableau. This gives you some additional flexibility with pie charts that is not available for other chart types, such as the ability to place them on maps. Creating a pie chart is not difficult. Simply change the mark type to Pie. This will give you an Angle shelf that you can use to encode a measure. Whatever dimension(s) you place on the Marks card (typically on the Color shelf) will define the slices of the pie. The following is an example of a pie chart in Tableau: You'll notice that the pie chart here uses Sales to define the angle of each slice; the higher the sum of sales, the wider the slice. The Department dimension slices the measure and defining slices of the pie. This view also demonstrates the ability to place multiple fields on the Label shelf. The second SUM(Sales) field is the percent age of the total table calculation you saw previously. Be careful when using pie charts. Most visualization experts will affirm that it is far more difficult for the human eye to differentiate differences in angles than it is to differentiate differences in length or position. For example, without the labels in the preceding chart, would you really be able to tell whether one slice was really 25 percent instead of 30 percent? A bar chart showing sales for the three departments would be more readable. Visualizing distributions Often, simply understanding totals, sums, and even the breakdown of part-to-whole only gives you a piece of the overall picture. Many times, you'll want to understand where individual items fall within a distribution of all similar items. You might find yourself asking questions like these: How long do most of our patients stay in the hospital? Which patients fall outside the normal range? What's the average life expectancy for components in a machine and which components fall above or below that average? Are there any components with extremely long or extremely short lives? How far above or below "passing" were most students' test scores? These questions all have similarities. In each case, you are asking for an understanding of how individuals (patients, components, and students) compared with each other. In each case, you most likely have a relatively high number of individuals. In data terms, you have a dimension (Patient, Component, and Student) with high cardinality (a high number of distinct individual values) and some measures (Length of Stay, Life Expectancy, and Test Score) you'd like to compare. Using one or more of the upcoming visualizations might be a good way to do this. Circle charts Circle charts are one way to visualize a distribution. Consider the following view, which shows you how each state compares to other states within the same region in terms of total profit: Here, you can easily see that certain states do far better or far worse than others in terms of profit. More than that, you can see whether the state has made or lost money and how much above or below the regional average the state was. Creating the view is not difficult. After placing the fields on shelves as shown in the preceding screenshot, simply change the mark type from Automatic (Bar) to Circle. Region defines the rows and each circle is drawn at the level of state that is in the level of Detail on the Marks card. Finally, to add the average lines, simply right-click on the Profit axis and select Add a Reference Line, Band, or Box…. In the resulting options window, add a line, Per Cell, for the average of SUM(Profit). You can adjust the label and formatting of the reference line as desired. Jittering When using views such as circle plots, you'll often see that marks overlap, which can lead to obscuring of the true story. Do you know for certain, just by looking, that there is only one state in the west region that is unprofitable? Or could there be two circles exactly overlapping? One way to minimize this is to click on the Color shelf and add some transparency and a border to each circle. Another approach is a technique called jittering. Jittering is a common technique in data visualization that involves adding a bit of intentional noise to a visualization to avoid overlap without harming the integrity of what is communicated. Alan Eldridge and Steve Wexler are among those who pioneered techniques for jittering in Tableau. Other jittering techniques can be found by searching for jittering on the Tableau forums or Tableau jittering using a search engine. Here is one approach to add a jitter: Start by duplicating the view created earlier and create a calculated field named Index with the Index() code. Index is a table calculation that starts with a value of 1 and increments for each intersection of dimension values within a partition of the view. Place the newly created Index field on Rows to the right of Region. Using the drop-down menu for Index, navigate to Compute Using | State. Using the drop-down menu for Index, uncheck Show Header to hide the axis. The values do not carry any meaning that needs to be conveyed to your audience. The faint horizontal grid lines do not add anything to the visualization. From the menu, navigate to Format | Lines and then set Grid Lines to None. Alternately, you may choose to keep the vertical lines, so instead, set Grid Lines to None under the Rows tab only. The following will be the result: What you've done is index each state within each region. As Index is continuous (green), it defines an axis and causes the circles to spread out vertically. Now you can more clearly see each individual mark and have higher confidence that overlap is not obscuring the true picture of the data. You can use jittering techniques on many different kinds of visualizations. Box and whisker plots Box and whisker plots add additional information and context to distributions. They show the upper and lower quartile and whiskers, which extend to either 1.5 times the upper/lower quartile or to the maximum/minimum values in the data. This allows you to see which data points are close to normal and which are outliers. The following is the circle chart from the previous example, with the addition of boxes and whiskers: To add box and whisker plots, right-click on an axis and select Add a Reference Line, Band, or Box…. Select Box Plot and set the desired options and formatting. Histograms Another possibility to show a distribution is to use a histogram. A histogram looks similar to a bar chart, but the bars show the count of occurrences of a value. For example, standardized test auditors looking for evidence of grade tampering might construct a histogram of student test scores. Typically, a distribution might look like this: The test scores are shown on the x axis and the height of each bar shows the number of students who had that particular score. A typical distribution should have a fairly recognizable curve with some students doing poorly, some doing extremely well, and most falling somewhere in the middle. Consider the implications if auditors observed the following visualization: Something is clearly wrong. It appears that graders bumped up students who were just shy of passing to barely passing. Histograms are very useful in catching anomalies like this. You can create a histogram in Tableau by following steps similar to these: Create a bin for a numeric field (typically, a measure) by right-clicking on the field in the Data window and selecting Create Bins…. A bin is a grouping of measure values by range. You can define the size of each bin. The bin will be displayed as a new Dimension field in the Data window. For this example, create bins of 100 for the Sales measure. Based on your data and questions, decide what you want to count. Do you want to count the number of records that occur in each sales bin? Use the Number of Records field. Do you want to count the number of distinct customers that fall into each bin? Right-click plus drag the Customer ID field onto Rows and select CNTD. Histograms can also be created very easily using Show Me. Simply select a single measure and then select Histogram from Show Me. It will create the bin and place the required fields on the view. You can adjust the size of a bin by right-clicking on it in the Data window. Here is an example of a histogram of the number of distinct customers for each sales bin. More customers purchased between $0 and $100 than any other range. Just like dates, the bin field drop-down includes an option for Show Missing Values. This can be very useful to avoid distorting the visualization and to identify what values don't occur in the data. Visualizing multiple axes to compare different measures Often, you'll need to use more than one axis to compare different measures, understand correlation, or analyze the same measure at different levels of detail. In these cases, you'll use visualizations with more than one axis. Scatterplots A scatterplot is an essential visualization type to understand the relationship between two measures. Consider a scatterplot when you find yourself asking questions like these: Does how much I spend on marketing really make a difference to sales? How much does power consumption go up with each degree of heating/cooling? Is there any correlation between rental price and the length of contract? Each of these questions seeks to understand the correlation (if any) between two measures. Scatterplots are great to see these relationships and also to locate outliers. Consider the following scatterplot, which looks at the relationship between the measures of the sum of Sales (on the x axis) and the sum of Profit (on the y axis): The dimensions of Department and Category on the Marks card define the level of detail. Color has been used to make it easy to see which department the category belongs to. Each mark in the view represents the total sales and total profit for a particular category in a particular department. The size of each circle indicates the number of distinct items sold in the category/department. The scatterplot points out an issue with tables. They have high sales but are unprofitable. Telephones, on the other hand, have high sales and high profit. Dual Axis One very important features of Tableau is Dual Axis. Scatterplots use two axes, and they are x and y. You've already seen how to use Measure Names and Measure Values to show more than one measure on a single axis. You saw in the stacked bar example that placing multiple continuous (green) fields next to each other on Rows or Columns results in multiple side-by-side axes. Dual axis, on the other hand, means that a view is using two axes that are opposite to each other with a common pane. For example, this view uses a dual axis for Sales and Profit: You can observe several key features of the view: The Sales and Profit fields on Rows indicate that they have a dual axis by sharing a flattened side. The Marks card is now an accordion-like control with an All section and a section for Sales and Profit. You can use this to customize marks for all measures or specifically customize marks for either Sales or Profit. Sales and Profit both define y axes that are on opposite sides of the view. Note that the peaks of the lines might lead you to believe that Sales and Profit were roughly equal in value at certain points. This is unlikely to be the case. Indeed, it is not. Instead, the axes are not in sync. Sales of $1,000,000 align with profit of just over $200,000. To fix this, right-click on the Profit axis and select Synchronize Axis. You must set the synchronize option using the secondary axis (Profit in the example). If the Synchronize Axis option is ever disabled on the secondary axis, it is likely that the two fields defining the axes are different numeric types. For example, one may be an integer, while the other may be a decimal. To enable the synchronize option, you'll need to force a match of the types by either changing the data type of one of the fields in the metadata or by creating a calculated field that specifically casts one of the fields to the matching type (for example, INT or FLOAT). Creating a dual axis is relatively easy. Simply drag and drop two continuous (green) fields next to each other on Rows or Columns, and then use the drop-down menu on the second and select Dual Axis. Alternately, you can drop the second field onto the canvas opposite the existing axis. Dual axes can be used with any field that defines an axis. This includes continuous numeric fields, continuous date fields, and latitude or longitude fields that define a geographic visualization. In the case of latitude or longitude, simply copy the field, place it immediately next to itself on Rows or Columns, and select Dual Axis. Combination charts Combination charts extend the use of dual axes to overlay different mark types. This is possible because the Marks card will give options to edit all marks or customize marks for each individual axis. Multiple mark types are available any time two or more continuous fields are located beside each other on Rows or Columns. This means that you can create views with multiple mark types even when you are not using a dual axis. Consider the following visualization: This chart uses a combination of bars and lines to show the total sales over time (using bars) and the breakdown of sales by department over time (using lines). This kind of visualization can be quite effective at giving additional context to detail. There are several things to note about this view: The field on the Color shelf is listed as Multiple Fields and is gray on the Marks card. This indicates that different fields have been used for Color for each axis on the Marks card (no field for the first Sales axis and Department for the second). The view demonstrates the ability to mix levels of detail in the same view. The bars are drawn at the highest level, while the lines are drawn at the level of Department. The view demonstrates the ability to use the same field (Sales, in this case) multiple times on the same shelf (Rows, in this case). The second axis (the Sales field on the right-hand side) has the header hidden to remove redundancy from the view. The months have been formatted to show abbreviations. This was done via the drop-down menu of the Order Date field on Columns, selecting Format, and selecting the desired format of the field for headers. Dual axis and combination charts open a wide range of possibilities for mixing mark types and levels of detail. Summary We covered quite a bit of ground in this article! You should now have a good grasp of when to use certain types of visualizations. The types of questions you ask of the data will often lead you to a certain type of view. You explored how to create these various types and how to extend basic visualizations using a variety of advanced techniques, such as calculated fields, jittering, multiple mark types, and dual axis. Along the way, we also covered some details on how dates work in Tableau using the special Measure Names / Measure Values fields. Hopefully, the examples using calculations have made you eager to learn more about creating calculated fields. The ability to create calculations in Tableau opens up endless possibilities for extending data, calculating results, customizing visualizations, and creating rich user interactivity. Resources for Article: Further resources on this subject: Creating Multivariate Charts [Article] Integrating with other Frameworks [Article] Using Canvas and D3 [Article]
Read more
  • 0
  • 0
  • 3908