Download or read online books in PDF, EPUB and Mobi Format. Click Download or Read Online button to get book now. This site is like a library, Use search box in the widget to get ebook that you want.

Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours

Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours Author Richard Blum
ISBN-10 9780789752055
Release 2013
Pages 582
Download Link Click Here

Provides step-by-step lessons that teach Python programming on Raspberry Pi, covering such topics as working with modules, writing scripts, using loops, creating functions, and exploring object-oriented programming.

Python Programming for Raspberry Pi Sams Teach Yourself in 24 Hours

Python Programming for Raspberry Pi  Sams Teach Yourself in 24 Hours Author Richard Blum
ISBN-10 9780134389578
Release 2015-12-10
Pages 624
Download Link Click Here

Python Programming for Raspberry Pi® In just 24 sessions of one hour or less, Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours teaches you Python programming on Raspberry Pi, so you can start creating awesome projects for home automation, home theater, gaming, and more. Using this book’s straight-forward, step-by-step approach, you’ll move from the absolute basics all the way through network and web connections, multimedia, and even connecting with electronic circuits for sensing and robotics. Every lesson and case study application builds on what you’ve already learned, giving you a rock-solid foundation for real-world success! Step-by-step instructions carefully walk you through the most common Raspberry Pi Python programming tasks. Quizzes at the end of each chapter help you test your knowledge. By the Way notes present interesting information related to the discussion. Did You Know? tips offer advice or show you easier ways to perform tasks. Watch Out! cautions alert you to possible problems and give you advice on how to avoid them. Richard Blum has administered systems and networks for more than 25 years. He has published numerous Linux and open source books, and is an online instructor for web programming and Linux courses used by colleges across the United States. His books include Ubuntu Linux Secrets; Linux for Dummies, Ninth Edition; PostgreSQL 8 for Windows; and Professional Linux Programming. Christine Bresnahan began working as a systems administrator more than 25 years ago. Now an Adjunct Professor at Ivy Tech Community College, she teaches Python programming, Linux administration and computer security. She is coauthor of The Linux Bible, Eighth Edition. With Blum, she also coauthored Linux Command Line & Shell Scripting Bible, Second Edition. Get your Raspberry Pi and choose the right low-cost peripherals Set up Raspian Linux and the Python programming environment Learn Python basics, including arithmetic and structured commands Master Python 3 lists, tuples, diction-aries, sets, strings, files, and modules Reuse the same Python code in multiple locations with functions Manipulate string data efficiently with regular expressions Practice simple object-oriented programming techniques Use exception handling to make your code more reliable Program modern graphical user interfaces with Raspberry Pi and OpenGL Create Raspberry Pi games with the PyGame library Learn network, web, and database techniques you can also use in business software Write Python scripts that send email Interact with other devices through Raspberry Pi’s GPIO interface Walk through example Raspberry Pi projects that inspire you to do even more On the Web: Register your book at for access to all code examples from the book, as well as update and corrections as they become available.

Python in 24 Hours Sams Teach Yourself

Python in 24 Hours  Sams Teach Yourself Author Katie Cunningham
ISBN-10 9780133354461
Release 2013-09-10
Pages 320
Download Link Click Here

In just 24 sessions of one hour or less, Sams Teach Yourself Python in 24 Hours will help you get started fast, master all the core concepts of programming, and build anything from websites to games. Using this book’s straightforward, step-by-step approach, you’ll move from the absolute basics through functions, objects, classes, modules, database integration, and more. Every lesson and case study application builds on what you’ve already learned, giving you a rock-solid foundation for real-world success! Step-by-step instructions carefully walk you through the most common Python development tasks. Quizzes and Exercises at the end of each chapter help you test your knowledge. Notes present interesting information related to the discussion. Tips offer advice or show you easier ways to perform tasks. Warnings alert you to possible problems and give you advice on how to avoid them. Learn how to… Install and run the right version of Python for your operating system Store, manipulate, reformat, combine, and organize information Create logic to control how programs run and what they do Interact with users or other programs, wherever they are Save time and improve reliability by creating reusable functions Master Python data types: numbers, text, lists, and dictionaries Write object-oriented programs that work better and are easier to improve Expand Python classes to make them even more powerful Use third-party modules to perform complex tasks without writing new code Split programs to make them more maintainable and reusable Clearly document your code so others can work with it Store data in SQLite databases, write queries, and share data via JSON Simplify Python web development with the Flask framework Quickly program Python games with PyGame Avoid, troubleshoot, and fix problems with your code

Arduino Programming in 24 Hours Sams Teach Yourself

Arduino Programming in 24 Hours  Sams Teach Yourself Author Richard Blum
ISBN-10 9780133764130
Release 2014-08-08
Pages 432
Download Link Click Here

In just 24 sessions of one hour or less, Sams Teach Yourself Arduino Programming in 24 Hours teaches you C programmingon Arduino, so you can start creating inspired “DIY” hardwareprojects of your own! Using this book’s straightforward, step-by-stepapproach, you’ll walk through everything from setting up yourprogramming environment to mastering C syntax and features, interfacing your Arduino to performing full-fledged prototyping.Every hands-on lesson and example builds on what you’ve alreadylearned, giving you a rock-solid foundation for real-world success! Step-by-step instructions carefully walk you through the most common Arduino programming tasks. Quizzes at the end of each chapter help you test your knowledge. By the Way notes present interesting information related to the discussion. Did You Know? tips offer advice or show you easier ways to perform tasks. Watch Out! cautions alert you to possible problems and give you advice on how to avoid them. Learn how to... Get the right Arduino hardware and accessories for your needs Download the Arduino IDE, install it, and link it to your Arduino Quickly create, compile, upload, and run your first Arduino program Master C syntax, decision control, strings, data structures, and functions Use pointers to work with memory—and avoid common mistakes Store data on your Arduino’s EEPROM or an external SD card Use existing hardware libraries, or create your own Send output and read input from analog devices or digital interfaces Create and handle interrupts in software and hardware Communicate with devices via the SPI interface and I2C protocol Work with analog and digital sensors Write Arduino C programs that control motors Connect an LCD to your Arduino, and code the output Install an Ethernet shield, configure an Ethernet connection, and write networking programs Create prototyping environments, use prototyping shields, and interface electronics to your Arduino

Programming the Raspberry Pi Getting Started with Python

Programming the Raspberry Pi  Getting Started with Python Author Simon Monk
ISBN-10 9780071807845
Release 2012-11-23
Pages 192
Download Link Click Here

Program your own Raspberry Pi projects Create innovative programs and fun games on your tiny yet powerful Raspberry Pi. In this book, electronics guru Simon Monk explains the basics of Raspberry Pi application development, while providing hands-on examples and ready-to-use scripts. See how to set up hardware and software, write and debug applications, create user-friendly interfaces, and control external electronics. Do-it-yourself projects include a hangman game, an LED clock, and a software-controlled roving robot. Boot up and configure your Raspberry Pi Navigate files, folders, and menus Create Python programs using the IDLE editor Work with strings, lists, and functions Use and write your own libraries, modules, and classes Add Web features to your programs Develop interactive games with Pygame Interface with devices through the GPIO port Build a Raspberry Pi Robot and LED Clock Build professional-quality GUIs using Tkinter

Linux Command Line and Shell Scripting Bible

Linux Command Line and Shell Scripting Bible Author Richard Blum
ISBN-10 9781118984192
Release 2015-01-06
Pages 816
Download Link Click Here

Talk directly to your system for a faster workflow with automation capability Linux Command Line and Shell Scripting Bible is your essential Linux guide. With detailed instruction and abundant examples, this book teaches you how to bypass the graphical interface and communicate directly with your computer, saving time and expanding capability. This third edition incorporates thirty pages of new functional examples that are fully updated to align with the latest Linux features. Beginning with command line fundamentals, the book moves into shell scripting and shows you the practical application of commands in automating frequently performed functions. This guide includes useful tutorials, and a desk reference value of numerous examples. The Linux command line allows you to type specific shell commands directly into the system to manipulate files and query system resources. Command line statements can be combined into short programs called shell scripts, a practice increasing in popularity due to its usefulness in automation. This book is a complete guide providing detailed instruction and expert advice working within this aspect of Linux. Write simple script utilities to automate tasks Understand the shell, and create shell scripts Produce database, e-mail, and web scripts Study scripting examples ranging from basic to advanced Whether used as a tutorial or as a quick reference, this book contains information that every Linux user should know. Why not learn to use the system to its utmost capability? Linux is a robust system with tremendous potential, and Linux Command Line and Shell Scripting Bible opens the door to new possibilities.

Python Programming with Raspberry Pi

Python Programming with Raspberry Pi Author Sai Yamanoor
ISBN-10 9781786469151
Release 2017-04-28
Pages 312
Download Link Click Here

Become a master of Python programming using the small yet powerful Raspberry Pi Zero About This Book This is the first book on the market that teaches Python programming with Raspberry Pi Zero Develop exciting applications such as a mobile robot and home automation controller using Python This step-by-step guide helps you make the most out of Raspberry Pi Zero using Python programming Who This Book Is For This book is aimed at hobbyists and programmers who want to learn Python programming and develop applications using the Pi Zero. They should have basic familiarity with electronics. What You Will Learn Configure Raspberry Pi using Python Control loops to blink an LED using simple arithmetic operations Understand how interface sensors, actuators, and LED displays work Get to grips with every aspect of Python programming using practical examples Explore machine vision, data visualization, and scientific computations Build a mobile robot using the Raspberry Pi as the controller Build a voice-activated home automation controller In Detail Raspberry Pi Zero is a super-small and super-affordable product from Raspberry Pi that is packed with a plethora of features and has grabbed the notice of programmers, especially those who use Python. This step-by-step guide will get you developing practical applications in Python using a Raspberry Pi Zero. It will become a valuable resource as you learn the essential details of interfacing sensors and actuators to a Raspberry Pi, as well as acquiring and displaying data. You will get started by writing a Python program that blinks an LED at 1-second intervals. Then you will learn to write simple logic to execute tasks based upon sensor data (for example, to control a motor) and retrieve data from the web (such as to check e-mails to provide a visual alert). Finally, you will learn to build a home automation system with Python where different appliances are controlled using the Raspberry Pi. The examples discussed in each chapter of this book culminate in a project that help improve the quality of people's lives. Style and approach This will be a learning, step-by-step guide to teach Python programming using the famous Raspberry Pi Zero. The book is packed with practical examples at every step along with tips and tricks for the Raspberry Pi fans

Learning Python with Raspberry Pi

Learning Python with Raspberry Pi Author Alex Bradbury
ISBN-10 9781118717059
Release 2014-03-10
Pages 286
Download Link Click Here

Explains how to leverage the revolutionary Raspberry Pi computer in order to learn the versatile Python programming language. Original.

Sams Teach Yourself Node js in 24 Hours

Sams Teach Yourself Node js in 24 Hours Author George Ornbo
ISBN-10 0672335956
Release 2012
Pages 442
Download Link Click Here

Presents lessons on how to build server-side applications using the Node.js platform.

Raspberry Pi Cookbook

Raspberry Pi Cookbook Author Simon Monk
ISBN-10 9781491939055
Release 2016-05-18
Pages 510
Download Link Click Here

With millions of new users and several new models, the Raspberry Pi ecosystem continues to expand—along with a lot of new questions about the Pi’s capabilities. The second edition of this popular cookbook provides more than 240 hands-on recipes for running this tiny low-cost computer with Linux, programming it with Python, and hooking up sensors, motors, and other hardware—including Arduino and the Internet of Things. Prolific hacker and author Simon Monk also teaches basic principles to help you use new technologies with Raspberry Pi as its ecosystem continues to develop. This cookbook is ideal for programmers and hobbyists familiar with the Pi through resources, including Getting Started with Raspberry Pi (O’Reilly). Python and other code examples from the book are available on GitHub. Set up your Raspberry Pi and connect to a network Work with its Linux-based operating system Program Raspberry Pi with Python Give your Pi "eyes" with computer vision Control hardware through the GPIO connector Use Raspberry Pi to run different types of motors Work with switches, keypads, and other digital inputs Use sensors to measure temperature, light, and distance Connect to IoT devices in various ways Create dynamic projects with Arduino

Designing Circuit Boards with EAGLE

Designing Circuit Boards with EAGLE Author Matthew Scarpino
ISBN-10 9780133819991
Release 2014
Pages 383
Download Link Click Here

"Matt Scarpino has provided a great tool for the hobbyist starting out in the circuit board design world, demonstrating all the features you'll need to create your own circuit board projects. However, the experienced engineer will also benefit from the book, as it serves as a complete reference guide to all EAGLE software configuration settings and features. His insightful guidance helps simplify difficult tasks, and his handy tips will help save you hours of trial-and-error experimentation." --Rich Blum, author, Sams Teach Yourself Arduino Programming in 24 Hours and Sams Teach Yourself Python Programming for Raspberry Pi in 24 Hours Powerful, flexible, and inexpensive, EAGLE is the ideal PCB design solution for every Maker/DIYer, startup, hobbyist, or student. Today, all open source Arduino designs are released in EAGLE format: If you want to design cost-effective new PCBs, this is the tool to learn. Matthew Scarpino helps you take full advantage of EAGLE's remarkable capabilities. You won't find any differential equations here: only basic circuit theory and hands-on techniques for designing effective PCBs and getting innovative new gadgets to market. Scarpino starts with an accessible introduction to the fundamentals of PCB design. Next, he walks through the design of basic, intermediate, and complex circuit boards, starting with a simple inverting amplifier and culminating in a six-layer single-board computer with hundreds of components and thousands of routed connections. As the circuits grow more complex, you'll master advanced EAGLE features and discover how to automate crucial design-related tasks. Whatever your previous experience, Scarpino's start-to-finish examples and practical insight can help you create designs of stunning power and efficiency. Understand single-sided, double-sided, and multilayer boards Design practical circuits with the schematic editor Transform schematics into physical board designs Convert board designs into Gerber output files for fabrication Expand EAGLE's capabilities with new libraries and components Exchange designs with LTspice and simulate their responses to input Automate simple repetitive operations with editor commands Streamline circuit design and library generation with User Language programs (ULPs) Design for the advanced BeagleBone Black, with high-speed BGA devices and a 32-bit system on a chip (SoC) Use buses to draw complex connections between components Configure stackups, create/route BGA components, and route high-speed signals provides an archive containing the design files for the book's circuits. It also includes EAGLE libraries, scripts, and User Language programs (ULPs).

Sams Teach Yourself C in One Hour a Day

Sams Teach Yourself C   in One Hour a Day Author Siddhartha Rao
ISBN-10 9780132786508
Release 2012-05-14
Pages 768
Download Link Click Here

Learn C++ in Just One Hour a Day Completely updated for the C++11 standard, Sams Teach Yourself C++ in One Hour a Day presents the language from a practical point of view, helping you learn how to use C++11 to create faster, simpler, and more efficient C++ applications. Master the fundamentals of C++ and object-oriented programming Understand how C++11 features help you write compact and efficient code using concepts such as lambda expressions, move constructors, and assignment operators Learn the Standard Template Library, including containers and algorithms used in most real-world C++ applications Test your knowledge and expertise using exercises at the end of every lesson Learn on your own time, at your own pace: No previous programming experience required Learn C++11, object-oriented programming, and analysis Write fast and powerful C++ programs, compile the source code with a gcc compiler, and create executable files Use the Standard Template Library’s (STL) algorithms and containers to write feature-rich yet stable C++ applications Develop sophisticated programming techniques using lambda expressions, smart pointers, and move constructors Learn to expand your program’s power with inheritance and polymorphism Master the features of C++ by learning from programming experts Learn C++11 features that allow you to program compact and high-performance C++ applications TABLE OF CONTENTS PART I: THE BASICS LESSON 1: Getting Started with C++11 LESSON 2: The Anatomy of a C++ Program LESSON 3: Using Variables, Declaring Constants LESSON 4: Managing Arrays and Strings LESSON 5: Working with Expressions, Statements, and Operators LESSON 6: Controlling Program Flow LESSON 7: Organizing Code with Functions LESSON 8: Pointers and References Explained PART II: FUNDAMENTALS OF OBJECT-ORIENTED C++ PROGRAMMING LESSON 9: Classes and Objects LESSON 10: Implementing Inheritance LESSON 11: Polymorphism LESSON 12: Operator Types and Operator Overloading LESSON 13: Casting Operators LESSON 14: An Introduction to Macros and Templates PART III: LEARNING THE STANDARD TEMPLATE LIBRARY (STL) LESSON 15: An Introduction to the Standard Template Library LESSON 16: The STL String Class LESSON 17: STL Dynamic Array Classes LESSON 18: STL list and forward_list LESSON 19: STL Set Classes LESSON 20: STL Map Classes PART IV: MORE STL LESSON 21: Understanding Function Objects LESSON 22: C++11 Lambda Expressions LESSON 23: STL Algorithms LESSON 24: Adaptive Containers: Stack and Queue LESSON 25: Working with Bit Flags Using STL PART V: ADVANCED C++ CONCEPTS LESSON 26: Understanding Smart Pointers LESSON 27: Using Streams for Input and Output LESSON 28: Exception Handling LESSON 29: Going Forward APPENDIXES A: Working with Numbers: Binary and Hexadecimal B: C++ Keywords C: Operator Precedence D: Answers E: ASCII Codes

Raspberry Pi User Guide

Raspberry Pi User Guide Author Eben Upton
ISBN-10 9781119264378
Release 2016-08-08
Pages 312
Download Link Click Here

Learn the Raspberry Pi 3 from the experts! Raspberry Pi User Guide, 4th Edition is the "unofficial official" guide to everything Raspberry Pi 3. Written by the Pi's creator and a leading Pi guru, this book goes straight to the source to bring you the ultimate Raspberry Pi 3 manual. This new fourth edition has been updated to cover the Raspberry Pi 3 board and software, with detailed discussion on its wide array of configurations, languages, and applications. You'll learn how to take full advantage of the mighty Pi's full capabilities, and then expand those capabilities even more with add-on technologies. You'll write productivity and multimedia programs, and learn flexible programming languages that allow you to shape your Raspberry Pi into whatever you want it to be. If you're ready to jump right in, this book gets you started with clear, step-by-step instruction from software installation to system customization. The Raspberry Pi's tremendous popularity has spawned an entire industry of add-ons, parts, hacks, ideas, and inventions. The movement is growing, and pushing the boundaries of possibility along with it—are you ready to be a part of it? This book is your ideal companion for claiming your piece of the Pi. Get all set up with software, and connect to other devices Understand Linux System Admin nomenclature and conventions Write your own programs using Python and Scratch Extend the Pi's capabilities with add-ons like Wi-Fi dongles, a touch screen, and more The credit-card sized Raspberry Pi has become a global phenomenon. Created by the Raspberry Pi Foundation to get kids interested in programming, this tiny computer kick-started a movement of tinkerers, thinkers, experimenters, and inventors. Where will your Raspberry Pi 3 take you? The Raspberry Pi User Guide, 3rd Edition is your ultimate roadmap to discovery.

Begin to Code with Python

Begin to Code with Python Author Rob Miles
ISBN-10 9781509304530
Release 2017-11-21
Pages 528
Download Link Click Here

Become a Python programmer–and have fun doing it! Start writing software that solves real problems, even if you have absolutely no programming experience! This friendly, easy, full-color book puts you in total control of your own learning, empowering you to build unique and useful programs. Microsoft has completely reinvented the beginning programmer’s tutorial, reflecting deep research into how today’s beginners learn, and why other books fall short. Begin to Code with Python is packed with innovations, from its “Snaps” prebuilt operations to its “Make Something Happen” projects. Whether you’re a total beginner or you’ve tried before, this guide will put the power, excitement, and fun of programming where it belongs: in your hands! Easy, friendly, and you’re in control! Learn how to… Get, install, and use powerful free tools to create modern Python programs Learn key concepts from 170 sample programs, and use them to jumpstart your own Discover exactly what happens when a program runs Approach program development with a professional perspective Learn the core elements of the Python language Build more complex software with classes, methods, and objects Organize programs so they’re easy to build and improve Capture and respond to user input Store and manipulate many types of real-world data Define custom data types to solve specific problems Create interactive games that are fun to play Build modern web and cloud-based applications Use pre-built libraries to quickly create powerful software Get code samples, including complete apps, at: About This Book For absolute beginners who’ve never written a line of code For anyone who’s been frustrated with other beginning programming books or courses For people who’ve started out with other languages and now want to learn Python Works with Windows PC, Apple Mac, Linux PC, or Raspberry Pi Includes mapping of MTA exam objectives that are covered in this book, as well as an appendix with further explanation of some of the topics on the exam

Learn to Program with Minecraft

Learn to Program with Minecraft Author Craig Richardson
ISBN-10 9781593277451
Release 2015-12-01
Pages 336
Download Link Click Here

You’ve bested creepers, traveled deep into caves, and maybe even gone to The End and back—but have you ever transformed a sword into a magic wand? Built a palace in the blink of an eye? Designed your own color-changing disco dance floor? In Learn to Program with Minecraft®, you’ll do all this and more with the power of Python, a free language used by millions of professional and first-time programmers! Begin with some short, simple Python lessons and then use your new skills to modify Minecraft to produce instant and totally awesome results. Learn how to customize Minecraft to make mini-games, duplicate entire buildings, and turn boring blocks into gold. You’ll also write programs that: –Take you on an automated teleportation tour around your Minecraft world –Build massive monuments, pyramids, forests, and more in a snap! –Make secret passageways that open when you activate a hidden switch –Create a spooky ghost town that vanishes and reappears elsewhere –Show exactly where to dig for rare blocks –Cast a spell so that a cascade of flowers (or dynamite if you’re daring!) follows your every move –Make mischief with dastardly lava traps and watery curses that cause huge floods Whether you’re a Minecraft megafan or a newbie, you’ll see Minecraft in a whole new light while learning the basics of programming. Sure, you could spend all day mining for precious resources or building your mansion by hand, but with the power of Python, those days are over! Requires: Windows 7 or later; OS X 10.10 or later; or a Raspberry Pi. Uses Python 3

Visual Basic 2015 in 24 Hours Sams Teach Yourself

Visual Basic 2015 in 24 Hours  Sams Teach Yourself Author James Foxall
ISBN-10 9780134191867
Release 2015-08-01
Pages 608
Download Link Click Here

In just 24 sessions of one hour or less, you’ll learn how to build complete, reliable, and modern Windows applications with Microsoft® Visual Basic® 2015. Using a straightforward, step-by-step approach, each lesson builds on what you’ve already learned, giving you a strong foundation for success with every aspect of VB 2015 development. Notes present interesting pieces of information. Tips offer advice or teach an easier way to do something. Cautions advise you about potential problems and help you steer clear of disaster. Learn How To Master VB 2015 by building a complete feature-rich application Navigate VB 2015 and discover its new shortcuts Work with objects, collections, and events Build attractive, highly-functional user interfaces Make the most of forms, controls, modules, and procedures Efficiently store data and program databases Make decisions in code Use powerful object-oriented techniques Work with graphics and text files Manipulate filesystems and the Registry Add email support Create efficient modules and reusable procedures Interact effectively with users Write code to preview and print documents Debug with VB 2015’s improved breakpoint features Distribute your software Download all examples and source code presented in this book from as they become available. Who Should Read This Book Those who have little or no programming experience or who might be picking up Visual Basic as a second language. Bug Alert Description: Changing the startup form's name in a VB WinForms app does not update the "Startup form" #4517 Explanation: In the latest Visual Basic update on GitHub, Microsoft accidentally introduced a significant bug that you should be aware of. In the Visual Basic project properties dialog on one of the tabs (Application), is a drop down box for selecting the "startup object". This can be either a Main method or a System.Windows.Forms instance (or System.Windows.Window for WPF). When you do a rename on a form (say from the code editor in source or from the solution explorer) currently set as the startup form the rename doesn't cascade to the startup object project property cause the project to enter an invalid state where the user must now manually reset this project property from the now nonexistent Form to the new name. This is a huge annoyance. The fix for the bug (until Microsoft addresses) can be found here:

Professional Linux Programming

Professional Linux Programming Author Jon Masters
ISBN-10 9780470149492
Release 2007-02-26
Pages 465
Download Link Click Here

This book is broken into four primary sections addressing key topics that Linux programmers need to master: Linux nuts and bolts, the Linux kernel, the Linux desktop, and Linux for the Web Effective examples help get readers up to speed with building software on a Linux-based system while using the tools and utilities that contribute to streamlining the software development process Discusses using emulation and virtualization technologies for kernel development and application testing Includes useful insights aimed at helping readers understand how their applications code fits in with the rest of the software stack Examines cross-compilation, dynamic device insertion and removal, key Linux projects (such as Project Utopia), and the internationalization capabilities present in the GNOME desktop