Unlock the world of web development with our comprehensive course! Whether you are a beginner or looking to enhance your coding skills, our masterclass will take you on an exciting journey. A project-based course that will help you learn and implement HTML, CSS, and JavaScript. With hands-on experience, you will design web pages, add interactive elements, and create a polished final project. Gain practical skills, optimize your coding workflow, and create professional web applications.
Objective-C programming training course description A hands on introduction that will allow you to master Objective-C and start using it to write powerful native applications for even the newest Macs and iOS devices! Using The step-by-step approach, will let you get comfortable with Objective-C's unique capabilities and Apple's Xcode 5 development environment. Make the most of Objective-C objects and messaging. Work effectively with design patterns, collections, blocks, foundation classes, threading, Git and a whole lot more. Every session builds on what you've already learned, giving a rock-solid foundation for real-world success! What will you learn Use Xcode 5. Declare classes, instance variables, properties, methods, and actions. Use arrays, dictionaries, and sets. Expand and extend classes with protocols, delegates, categories, and extensions. Use Apple's powerful classes and frameworks. Objective-C programming training course details Who will benefit: Developers wanting to learn Objective-C. Prerequisites: Software development fundamentals. Duration 5 days Objective-C programming training course contents PART 1: GETTING STARTED WITH OBJECTIVE-C The Developer Program: Objective-C, enrolling as an Apple Developer, setting up the development environment, Xcode. Your first project. OO programming with Objective-C: OO projects, Frameworks, classes and instances, encapsulation, accessors, Inheritance. OO features in Objective-C: Messages, methods, working with id, nesting messages, method signatures and parameters. allocating and initializing objects. Using Xcode: Xcode, source code control, git and Xcode, Using a Remote Repository. Compiler Directives: Projects, Compiler Directives, Prefix headers, main.m, .h files. PART 2: OBJECTIVE-C BASICS Messaging in a Testbed App: Setting Up the Testbed Apps, Adding a Text Field and Connecting It to Your Code, Sending a Message to the Text Field, Reviewing the Message Syntax. Declaring a Class in an Interface File: Context, Creating an Instance Variable with id, What Happens When Execution Stops, dynamic binding, Creating an Instance Variable for with the Class Name and with a Superclass Name, instance variable visibility. Properties in an Interface File: Interface Variables vs Properties, Declared Properties, Using Attributes. Implementing Properties. @synthesize, @dynamic. Methods in an Interface File: Methods in a Class, class and instance methods, Method declaration, returning complex data structures from Methods. Actions in an Interface File: Actions, Actions in OS X and iOS, disconnecting actions. Routing messages with selectors: Receiver and selector objects in messages, Objective-C Runtime, SEL and @selector (), performSelector, NSInvocation, testing whether an Instance can respond to a selector. Building on the Foundation: The Foundation Framework, Foundation Classes, Foundation Paradigms and Policies; Mutability, class clusters, notifications. Defining a Class in Implementation Files: Projects, dynamic typing, creating a new App, implementing a method, expanding Classses with init Methods. Organizing Data with Collections: Collecting Objects, Property Lists, Runtime, comparing the Collection Classes, Creating a Collection, Objective-C Literal Syntax, Enumerating collections, Testing Membership in a Collection, Accessing an Object in a Collection. Managing Memory and Runtime Objects: Managing objects in memory, managing reference counts manually and with ARC, variable qualifiers, variable autorelease. PART 3: EXPANDING AND EXTENDING CLASSES Protocols and Delegates: Subclassing, Protocols, Delegates, Looking Deeper Inside Protocols. Categories and Extensions: Comparing categories and protocols, categories vs subclasses, working with categories, class extensions, informal protocols. Associative References and Fast Enumeration: Objective-C 2.0 Time-Saving Features, Extending Classes by Adding Instance Variables (Sort of), Using Fast Enumeration. Blocks: Revisiting Blocks, Callbacks, Blocks, Exploring Blocks in Cocoa, Cocoa Blocks and Memory. PART 4: BEYOND THE BASICS Handling Exceptions and Errors: Exception and Error classes: NSException, NSError, Identifying exceptions, throwing exceptions, catching exceptions. Queues and Threading: Getting Started with Concurrency, Introducing Queues, Dispatch Sources, Using Dispatch Queues. Working with the Debugger: Logging Information, Console Logs, NSLog, Smart Breakpoints, enhancing breakpoints with messages. Using Xcode Debug Gauges for Analysis: Debug Gauges, Monitoing CPU and memory utilization, monitoring energy, Using Instruments. PART 5: OPTIONAL TOPICS C Syntax Summary: Data Types, Control Structures. Apps, Packages, and Bundles: Project Bundles, lproj Files, Asset Catalogs, plist Files, Precompiled Header Files (.pch). Archiving and Packaging Apps for Development and Testing: Archiving.
Advanced Java training course description A tour of the more advanced features of Java following on from the Introduction to Java course. JDBC and JavaBeans are covered in separate courses. What will you learn Use Java to implement OOA/D. Use within Java programs - Internationalisation - Object serialisation - Reflection - RMI - Swing - JAR files Write Servlets and Java Server Pages Advanced Java training course details Who will benefit: Those wishing to program in Java. Prerequisites: Introduction to Java programming Duration 5 days Advanced Java training course contents What you should already know OO features in Java Static initialisers, object destruction, finalisation, constructor chaining, shadowing, Abstract classes and interfaces, inner classes, nested classes, member classes, local classes, anonymous classes. Internationalisation Locales, Unicode, local customs, localising messages. Object Serialisation Simple and custom serialisation, class versioning. Reflection Obtaining class and member information. RMI Restrictions, RMI architecture, Stubs, skeletons, rmic, the registry server, The RMI API. Swing An overview, examples, comparison vs. AWT, data transfer cut & paste. Servlets Servlet API, Java Web server, The servlet life cycle, chaining servlets, Hybrid servlets. JAR files and signed applet JAR files and signed applet
MySQL for developers training course description This MySQL Developers training course is designed for MySQL Developers who have a good understanding of a MySQL database and experience of using SQL commands. The course provides further practical experience in more advanced MySQL commands and SQL statements including Stored Routines, Triggers and Event Scheduling. What will you learn Provide the skills needed to write more advanced queries and database maintenance statements on a MySQL database. Use advanced features of the MySQL Client. Use advanced data types. Manage the structure of databases and tables. Manage and using indexes. Write complex SQL query statements. Use advanced SQL expressions. Use advanced SQL functions. Perform advanced Insert, Update, Delete, Replace and Truncate Operations. Use user variable syntax and properties. Import and export data from within MySQL. Import and export data from the command line. Perform complex joins to access multiple tables. Perform complex subqueries. Create, manage and us views. Use prepared statements. Create and use stored routines. Create and use triggers. Obtain database metadata. Optimize queries. Work with the main storage engines. Debug MySQL applications. MySQL for developers training course details Who will benefit: MySQL Developers who have a basic understanding of a MySQL database and SQL commands as covered on the Introduction to MySQL course. Prerequisites: MySQL foundation Duration 5 days MySQL for developers training course contents Introduction Administration and Course Materials, Course Structure and Agenda, Delegate and Trainer Introductions. Client/server concepts MySQL client/server architecture, Server modes, Using client programs, Logging in options, Configuration files, Precedence of logging in options Hands on Using client/server The MySQL client program Using MySQL interactively, The MySQL prompts, Client commands and SQL statements, Editing, Selecting a database, Help, Safe updates, Using script files, Using a source file, Redirecting output into a file, Command line execution, Mysql output formats, Overriding the defaults, Html and xml output, MySQL Utilities. Hands on Using the MySQL client program Data types Bit data type, Numeric data types, Auto_increment, Character string data types, Character sets and collation, Binary string data types, Enum and Set data types, Temporal data types, Timezone support, Handling Missing Or Invalid Data Values, SQL_MODE options. Hands on Using data types Identifiers Using Quotes with identifier naming, Case sensitivity in Identifier naming, Qualifying columns with table and database names, Using reserved words as identifiers, Function names Hands on Using identifiers Databases Database properties, Creating a database, Selecting a database, Altering databases, Dropping databases, Obtaining database metadata, The SHOW command, The INFORMATION_SCHEMA database, The SHOW CREATE command Hands on Using databases Tables and indexes Table properties, Creating tables, Create table using Select or Like, Temporary tables and memory tables, Altering tables, Adding columns, Changing column widths and types, Renaming columns, Dropping columns, Adding constraints, Dropping constraints, Renaming tables, Change the table storage engine, Multiple alterations, Dropping tables, Emptying tables, Obtaining table metadata, Show create table, The information_schema, Index introduction, Structure of a mysql index, Creating and dropping indexes, Creating an index, Altering a table to add an index, Specifying index type, Dropping indexes, Obtaining Index Metadata. Hands on Creating, altering and dropping tables/indexes Querying for data The SQL select statement and MySQL differences, Advanced order by, Order by and collation, Order by with enum datatype, Order by with Set datatype, Ordering with distinct and group by Special features of union, Limit and order by clauses, Group By clause, Group_concat, Using Rollup in a Group By clause. Hands on Querying for data SQL Expressions and functions Components of expressions, Nulls, Numeric expressions, String expressions, Temporal expressions, Comparison functions, Flow control functions, Numeric functions, String functions, Temporal functions. Hands on Using expressions and functions Updating data Update operations and privileges, Inserting rows, Insert using a set clause, Inserting duplicate values, Replacing rows, Updating rows, Update using the order by and limit clauses, Deleting rows, The delete and truncate statements. Exercise: Inserting, updating, replacing and deleting data Connectors MySQL client interfaces, MySQL connectors, Oracle and community conectors, Connecting to MySQL server using Java and PHP connectors, MySQL and NoSQL, Innodb integration with memcached. Obtaining database metadata What is metadata?, The mysqlshow utility, The show and describe commands, Describing tables, The information_schema, Listing tables, Listing columns, Listing views, Listing key_columns_usage. Hands on Obtaining database metadata Debugging Mysql error messages, The show statement, Show errors, Show count(*) errors, Show warnings, Show count(*) warnings, Note messages, The perror utility. Hands on Debugging Joins Overview of inner joins, Cartesian product, Inner joins with original syntax, Non equi-join, Using table aliases to avoid name clashes, Inner Joins With ISO/ANSI Syntax, Outer Joins, Left outer joins, Right outer joins, Full outer joins, Updating multiple tables simultaneously, Updating rows in one table based on a condition in another, Updating rows in one table reading data from another, Deleting from multiple tables simultaneously, Deleting rows in one table based on a condition in another. Hands on Coding joins Subqueries Types of subquery, Multiple-column subqueries, Correlated subqueries, Using the ANY, ALL and SOME operators, Using the EXISTS operator, Subqueries as scalar expressions, Inline views, Converting subqueries to joins, Using subqueries in updates and deletes. Hands on Coding subqueries Views Why views are used, Creating views, View creation restrictions, View algorithms, Updateable views, Altering and dropping views, Displaying information about views, Privileges for views. Hands on Using views Import and Export Exporting using SQL, Privileges required to export data, Importing using SQL, Messages when loading data, Privileges required to load data, Exporting from the command line, Mysqldump main options, Importing from the command line, Mysqlimport main options. Hands on Importing and exporting User variables and prepared statements Creating User variables, User variables in a select, Prepared statements, The prepare statement, The execute statement, The deallocate statement, Using prepared statements in code, with connectors. Hands on Using variables and prepared statements Introduction to stored routines Types of stored routines, Benefits of stored routines, Stored routine features, Differences between procedures and functions, Introduction to the Block, Declaring variables and constants, Assigning values to variables, Definer rights and invoker rights, Using SELECT in stored routines, Altering and dropping stored routines, Obtaining stored routine metadata, Stored routine privileges and execution security. Hands on Writing simple stored routines Stored routines - program logic The IF .. THEN .. ELSEIF construct, The CASE statement, The basic loop, The while loop, The repeat loop, The iterate statement, Nested loops. Hands on Writing stored routines with program logic Stored routines - exception handlers and cursors Dealing with errors using Exception handlers, Cursors, What is a cursor?, Cursor operations, Declaring cursors, Opening and closing cursors, Fetching rows, Status checking. Hands on Writing stored routines with program logic Procedures with parameters Creating procedures with parameters, Calling Procedures With Parameters. Hands on Writing stored routines with parameters Functions What is a function?, The create function statement, Executing functions, Executing functions from code, Executing functions from SQL statements, The deterministic and SQL clauses. Hands on Writing functions Triggers Trigger creation, Restrictions on triggers, The create trigger statement, Using the old and new qualifiers, Managing triggers, Destroying triggers, Required privileges. Hands on Writing triggers Basic optimizations Normalisation of data to third normal form, Using indexes for optimization, General query enhancement, Using Explain to analyze queries, Choosing an INNODB or MYISAM storage engine, Using MySQL Enterprise Monitor in query optimization. Hands on Making use of basic optimizations More about indexes Indexes and joins Hands on Investigating indexes and joins
XSLT training course description This course has been designed as a follow on course for the XML primer course. The course looks at the use of XSLT in the transforming and styling XML documents. What will you learn Transform and style XML documents using XSLT. XSLT training course details Who will benefit: Anyone working with XSLT. Prerequisites: XML primer Duration 2 days XSLT training course contents Introduction Extensible Stylesheet Language (XSL), transforming and formatting XML. XML refresher The basic rules for building an XML document. An introduction to XSLT The basic concepts of XSLT, xsl:output, xsl:template, xsl:value-of. XML documents as trees How the original XML is transformed into a set of nodes, the general terms for manipulating node trees. Paths (XPath) Use of path matching to select required nodes for transformation. Using templates xsl:apply-templates, xsl:template match, nested templates, xsl:copy , <comment> and <element> , default templates, parameters. Control xsl:if, xsl:choose, xsl:for-each, xsl:sort. Constructing the result tree xsl:output, xsl:attribute, xsl:attribute-set, xsl:comment, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable. Combining templates xsl:include, xsl:import, xsl:apply-imports. Transforming to text
This second-edition JavaScript course covers fundamental concepts, including variables, data types, functions, and control flow, as well as advanced topics such as object-oriented programming, modules, and testing. With practical projects and clear explanations, learners can gain a solid understanding of the language and develop their skills.
Embark on a transformative journey with Kranti Yoga's 200-Hour Workshop, a soul-enriching experience designed to deepen your understanding of yoga, nurture self-discovery, and enhance overall well-being. Whether you're a seasoned practitioner or a novice, this immersive workshop invites you to explore the profound teachings of yoga in a supportive and tranquil environment.
REVIVE & THRIVE Revitalising Women’s Retreat5 nights: Tues 21st - Sun 26th May 2024 - SOLD OUT 8 nights: Sat 21st - Sun 29th September 2024 - only 8 spaces left Go from feeling …. Tired to Renewed calm and centred in your body, with your spark restored, and spirit lifted Low energy to Revitalised revived and recharged, physically and mentally, and ready to face life’s challenges Unempowered to Empowered inspired and motivated to continue energising eating habits and self-care Escape to Turkiye’s Turquoise Coast for an uplifting, transformative women’s retreat designed to revitalise your body, mind, and eating habits. Rejuvenate mind, body and spirit Reclaim control of your energy Re-energise your eating habits 9-days dedicated to your complete wellbeing, Revive & Thrive includes A magical destination: Türkiye’s Aegean coast with its sapphire waters, ancient cultural influences, dramatic views and warm and hospitable culture is a place to immerse yourself in vibrant natural beauty, to rest, restore, and feel alive and reinvigorated. Set in a breath-taking, sweeping bay, with a mountainous backdrop, Kalkan is a historic fishing town with an exquisite harbour now bordered with friendly waterfront restaurants and small boutiques. Thriving but unspoilt, you’ll find its winding streets with overhanging balconies and eclectic Ottoman architecture irresistible. A picturesque resort with comfortable accommodation: Patara Prince is a charming, rustic, privately-owned resort hotel nestled into the coast just across Kalkan bay. You will fall in love with its natural stone, abundant greenery and character-full winding pathways. It is far enough from the town to enjoy serenity and peace, but just a 15-minute walk or short boat ride for explorers. The vibe is mellow and comfortable, intimate yet spacious with plenty of areas in which to lose yourself and enjoy those much needed quiet moments and ‘you time’. You will have full use of the facilities including two salt-water, ocean-view pools, and tennis courts. Your en suite room with a sea view will be situated in the main hotel, furnished in a traditional style. A supportive wellness journey: Revive & Thrive is a gently revitalising retreat designed by wellness professionals, Emily Perrier and Sarah Grant. Taking a mind-body-spirit approach, they use the seven chakras as a basis for their 8-night retreat programme. The chakra system is the body’s major energy system, and represents the flow of life energy through the body. During your retreat journey, you will be introduced to each chakra and its function, and discover how to restore balance and keep energy flowing healthily and harmoniously. You will have ready access to Sarah and Emily’s friendly support through-out, and receive a supportive printed workbook. A post-retreat group online workshop with Sarah & Emily will be available 6-weeks later to help you identify areas where you could create more balance, and continue to thrive. Daily Energy Medicine Yoga®️: Designed for all abilities, this gentle and restorative practice is a magical union of yoga and energy medicine that amplifies the benefits of a traditional practice by combining simple movements that help the body to self-regulate, energise, and move with more ease. Daily Energy & Intuitive Eating Workshops: Relaxed workshops and sharing circles designed to build understanding of how your body’s natural energy system connects with your health and habits. These inspiring and illuminating sessions connect you with intuitive approaches to eating that help to de-stress your relationship with food, retune with your body, and enhance energy in your daily life. Other holistic activities: Restorative guided meditations, rejuvenating visualisations, journalling, breath-work practice, and coastal walks. (You can also book into a local spa/hammam or have reflexology onsite at additional cost). Energising excursions: Wander through the stalls of a delightful food market in a neighbouring town; discover Patara’s ancient Lycian ruins and golden 12-mile protected beach; unwind for a day on a private gulet boat trip with plenty of swim stops and an opportunity for a cleansing mud bath. Nourishing food: Locally sourced, nutritious, plant-powered Turkish meals. Vegans and vegetarians will be well catered for. Breakfasts will be Turkish-style including salads, tomatoes, cucumber, eggs, olives, cheese, breads, tahini, oats, yoghurts and fruits. A spectacular Turkish breakfast in the mountains, and an evening meal on the roof terrace of a local restaurant, are also included. We will cater for any food allergies and intolerances; please notify us when booking your place.
Embark on a transformative journey with our comprehensive 200 Hour Yoga Teacher Training in India at Gyan Yog Breath, nestled in the heart of India. This course is designed for those who seek to deepen their practice, understand the profound principles of yoga, and share this ancient wisdom with others. Our 200 Hour Yoga Teacher Training program blends traditional teachings with modern techniques, offering a holistic approach to yoga education. Over the course of four weeks, you will immerse yourself in the study of yoga asanas, pranayama, meditation, anatomy, philosophy, and teaching methodology. Gain in-depth knowledge of various yoga postures, focusing on alignment, benefits, and modifications. Learn how to use props like chairs, bolsters, straps, and blocks to enhance your practice and assist your future students. Explore different breathing techniques to control and enhance the flow of prana (life energy) in your body, promoting overall well-being. Delve into the practice of meditation to cultivate mindfulness, concentration, and inner peace. Study the ancient texts of yoga, including the Yoga Sutras of Patanjali, to understand the ethical and spiritual foundations of yoga practice. Learn about the human body’s musculoskeletal and physiological systems, and understand how yoga impacts and benefits these systems. Develop your teaching skills with practical training sessions. Learn how to create effective class sequences, give clear instructions, perform hands-on adjustments, and cultivate a compassionate teaching presence. Understand how to tailor yoga practices to accommodate different physical abilities, health conditions, and life stages, ensuring that yoga is accessible to everyone. Our training goes beyond physical postures, emphasizing the integration of mind, body, and spirit. Learn from highly experienced and passionate yoga teachers dedicated to your growth and transformation. Become part of a vibrant and supportive yoga community that encourages personal and collective growth. Experience the rich cultural heritage of India, the birthplace of yoga, and deepen your understanding of this ancient practice in its authentic environment. Upon successful completion of the course, you will receive a 200 Hour Yoga Teacher Training certification accredited by Yoga Alliance, enabling you to teach yoga internationally. Join us at Gyan Yog Breath for a profound and life-changing 200 Hour Yoga Teacher Training experience. Whether you aspire to teach yoga or deepen your personal practice, this course will equip you with the knowledge, skills, and confidence to follow your path with clarity and purpose.
This 3 day Tableau Desktop Advanced Training course is designed for professionals who have been working with Tableau for some time and are looking to dive deeper and learn analytical use cases that utilise Tableaus advanced features. It is also a perfect refresher course if you want to upgrade your skills to the latest features. Public Course Options EXTEND YOUR KNOWLEDGE OF TABLEAU IN THIS HANDS-ON COURSE TRAINING £1,200 per person + VAT 3 Day live virtual course 12 Months access to online course This 3 day Tableau Desktop Advanced Training course is designed for the professional who has been working with Tableau for some time and is looking to dive deeper. You will review all calculation types and apply Table Calculations and Level of Detail Expressions in multiple use cases. You will also learn advanced techniques for analysing time series data, cohorts and survey data. You will learn advanced mapping and dashboard techniques to help improve the insights gained for your target audience. You will be introduced to the latest features together with practical use cases for getting the most benefit from them. Attendees should have a deep understanding of the fundamental concepts of building Tableau worksheets and dashboards and be comfortable with the techniques learnt in the Foundation and Analyst courses. At the end of this course you will be able to apply and combine some of the more complex capabilities and techniques that Tableau has to offer. In addition to our regular 2 day syllabus we have added an additional day so that we can add learning for many new features introduced into Tableau over the last couple of years. Live Coaching and Q&A Access In addition to the 3 day live and interactive course, delegates also receive 6 weeks live access to our Coaching and Q&A calls that take place 3 times each week. Delegates have found these to be highly beneficial to enhance their learning experience as well as assisting with applying the learning from the course to practical working deliverables on their own data. The course includes the following topics: RECAP: CALCULATIONS Review of Number Functions Review of String Functions Review of Date Functions Review of Type Conversions Review of Logical Functions Review of Aggregate Functions Alternatives to Calculations 2 Hands-on exercises GETTING THE MOST FROM TABLE CALCULATIONS What are and when to use Table Calculations What Table Calculation Types are there? Defining the Scope and Direction of calculations Using Table Calculations in Calculated Fields How do Filters work with Table Calculations? 7 Hands-on exercises LODS - LEVEL OF DETAIL EXPRESSIONS Overview FIXED LOD How do Filters work with LODs? INCLUDE LOD EXCLUDE LOD Nesting LODs Comparing the various Calculation Types 5 Hands-on exercises ADVANCED TECHNIQUES FOR ANALYSING TIME-BASED DATA Creating Sparklines Creating Slope Charts Creating Control Charts Creating Bump Charts 4 Hands-on exercises ANALYSING BEHAVIOURS IN DATA Creating Cohort Analysis Analysing Survey Data 2 Hands-on exercises ADVANCED TECHNIQUES FOR MAPPING Mapping Distance from a point Normalising map areas with Hexbins Combining Spatial & Data Files 3 Hands-on exercises ADVANCED CONSIDERATIONS FOR DASHBOARDS Identifying your Audience Using Containers and Layout Considerations for Dashboard Elements Sheet swapping Adding Dashboard Actions to Context 2 Hands-on exercises In addition to the regular syllabus we will also cover the following New Features : Viz in Tooltips Set Actions Parameter Actions Show/Hide Containers Animations Dashboard Navigation Button Replace Worksheet in a Dashboard (DB) Show/Hide Sort Controls Vector Maps Customisable reference line tooltips Automatic dashboard phone layouts Export to PowerPoint Transparent worksheet backgrounds Density Mark Type (New Heatmap) Dashboard Extensions Step and Jump Lines Dashboard Grids Nested sorting improvements Ask Data Explain Data Spatial Calculations Negative values on log axis Additional clustering functionality Enhanced cross-database join control This training course includes over 35 hands-on exercises and quizzes to help participants “learn by doing” and to assist group discussions around real-life use cases. A comprehensive training manual is provided together with all the data, starter and solution Tableau Workbooks required for the training. Students must use their own laptop with an active version of Tableau Desktop 2020.1 (or later) pre-installed. What People Are Saying About This Course "Course was fantastic and completely relevant to the work I am doing with Tableau. I particularly liked Steve's method of teaching and how he applied the course material to 'real-life' use-cases."Richard W., Dashboard Consulting Ltd "This course was extremely useful and excellent value. It helped me formalise my learning and I have taken a lot of useful tips away which will help me in everyday work."Lauren M., Baillie Gifford "I would definitely recommend taking this course if you have a working knowledge of Tableau. Even the little tips Steve explains will make using Tableau a lot easier. Looking forward to putting what I've learned into practice."Aron F., Grove & Dean "Steve is an excellent teacher and has a vast knowledge of Tableau. I learned a huge amount over the two days that I can immediately apply at work."John B., Mporium