Redis-In-Action.Pdf

Total Page:16

File Type:pdf, Size:1020Kb

Redis-In-Action.Pdf IN ACTION Josiah L. Carlson FOREWORD BY Salvatore Sanfilippo MANNING www.allitebooks.com Redis in Action www.allitebooks.com www.allitebooks.com Redis in Action JOSIAH L. CARLSON MANNING Shelter Island www.allitebooks.com For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 261 Shelter Island, NY 11964 Email: [email protected] ©2013 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Elizabeth Lexleigh 20 Baldwin Road Technical proofreaders: James Philips, Kevin Chang, PO Box 261 and Nicholas Lindgren Shelter Island, NY 11964 Java translator: Eric Van Dewoestine Copyeditor: Benjamin Berg Proofreader: Katie Tennant Typesetter: Gordan Salinovic Cover designer: Marija Tudor ISBN 9781935182054 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – MAL – 18 17 16 15 14 13 www.allitebooks.com To my dear wife, See Luan, and to our baby girl, Mikela www.allitebooks.com www.allitebooks.com brief contents PART 1 GETTING STARTED . ..........................................................1 1 ■ Getting to know Redis 3 2 ■ Anatomy of a Redis web application 24 PART 2 CORE CONCEPTS.............................................................37 3 ■ Commands in Redis 39 4 ■ Keeping data safe and ensuring performance 63 5 ■ Using Redis for application support 90 6 ■ Application components in Redis 110 7 ■ Search-based applications 154 8 ■ Building a simple social network 185 PART 3 NEXT STEPS.................................................................207 9 ■ Reducing memory use 209 10 ■ Scaling Redis 228 11 ■ Scripting Redis with Lua 249 vii www.allitebooks.com www.allitebooks.com contents foreword xv preface xvii acknowledgments xix about this book xxi about the cover illustration xxv PART 1 GETTING STARTED ..................................................1 Getting to know Redis 3 1 1.1 What is Redis? 4 Redis compared to other databases and software 4 ■ Other features 6 ■ Why Redis? 6 1.2 What Redis data structures look like 7 Strings in Redis 9 ■ Lists in Redis 10 ■ Sets in Redis 11 Hashes in Redis 12 ■ Sorted sets in Redis 13 1.3 Hello Redis 15 Voting on articles 15 ■ Posting and fetching articles 19 Grouping articles 20 1.4 Getting help 22 1.5 Summary 22 ix www.allitebooks.com x CONTENTS Anatomy of a Redis web application 24 2 2.1 Login and cookie caching 25 2.2 Shopping carts in Redis 29 2.3 Web page caching 30 2.4 Database row caching 31 2.5 Web page analytics 34 2.6 Summary 36 PART 2 CORE CONCEPTS ...................................................37 Commands in Redis 39 3 3.1 Strings 40 3.2 Lists 43 3.3 Sets 46 3.4 Hashes 48 3.5 Sorted sets 50 3.6 Publish/subscribe 54 3.7 Other commands 57 Sorting 57 ■ Basic Redis transactions 58 ■ Expiring keys 61 3.8 Summary 62 Keeping data safe and ensuring performance 63 4 4.1 Persistence options 64 Persisting to disk with snapshots 65 ■ Append-only file persistence 68 ■ Rewriting/compacting append-only files 70 4.2 Replication 70 Configuring Redis for replication 71 ■ Redis replication startup process 72 ■ Master/slave chains 73 ■ Verifying disk writes 74 4.3 Handling system failures 75 Verifying snapshots and append-only files 76 ■ Replacing a failed master 77 4.4 Redis transactions 78 Defining users and their inventory 79 ■ Listing items in the marketplace 80 ■ Purchasing items 82 4.5 Non-transactional pipelines 84 CONTENTS xi 4.6 Performance considerations 87 4.7 Summary 89 Using Redis for application support 90 5 5.1 Logging to Redis 91 Recent logs 91 ■ Common logs 92 5.2 Counters and statistics 93 Storing counters in Redis 94 ■ Storing statistics in Redis 98 Simplifying our statistics recording and discovery 100 5.3 IP-to-city and -country lookup 102 Loading the location tables 102 ■ Looking up cities 104 5.4 Service discovery and configuration 104 Using Redis to store configuration information 105 ■ One Redis server per application component 106 ■ Automatic Redis connection management 107 5.5 Summary 109 Application components in Redis 110 6 6.1 Autocomplete 111 Autocomplete for recent contacts 111 ■ Address book autocomplete 113 6.2 Distributed locking 116 Why locks are important 117 ■ Simple locks 119 ■ Building a lock in Redis 120 ■ Fine-grained locking 123 ■ Locks with timeouts 126 6.3 Counting semaphores 127 Building a basic counting semaphore 127 ■ Fair semaphores 129 Refreshing semaphores 132 ■ Preventing race conditions 132 6.4 Task queues 134 First-in, first-out queues 134 ■ Delayed tasks 137 6.5 Pull messaging 140 Single-recipient publish/subscribe replacement 140 ■ Multiple-recipient publish/subscribe replacement 141 6.6 Distributing files with Redis 146 Aggregating users by location 146 ■ Sending files 148 Receiving files 149 ■ Processing files 150 6.7 Summary 152 xii CONTENTS Search-based applications 154 7 7.1 Searching in Redis 155 Basic search theory 155 ■ Sorting search results 161 7.2 Sorted indexes 163 Sorting search results with ZSETs 163 ■ Non-numeric sorting with ZSETs 165 7.3 Ad targeting 167 What’s an ad server? 168 ■ Indexing ads 168 ■ Targeting ads 171 Learning from user behavior 175 7.4 Job search 181 Approaching the problem one job at a time 181 ■ Approaching the problem like search 182 7.5 Summary 183 Building a simple social network 185 8 8.1 Users and statuses 186 User information 186 ■ Status messages 187 8.2 Home timeline 188 8.3 Followers/following lists 190 8.4 Posting or deleting a status update 192 8.5 Streaming API 196 Data to be streamed 196 ■ Serving the data 197 ■ Filtering streamed messages 200 8.6 Summary 206 PART 3 NEXT STEPS .......................................................207 Reducing memory use 209 9 9.1 Short structures 210 The ziplist representation 210 ■ The intset encoding for SETs 212 ■ Performance issues for long ziplists and intsets 213 9.2 Sharded structures 215 HASHes 216 ■ SETs 219 9.3 Packing bits and bytes 222 What location information should we store? 222 ■ Storing packed data 224 ■ Calculating aggregates over sharded STRINGs 225 9.4 Summary 227 CONTENTS xiii Scaling Redis 228 10 10.1 Scaling reads 228 10.2 Scaling writes and memory capacity 232 Handling shard configuration 233 ■ Creating a server-sharded connection decorator 234 10.3 Scaling complex queries 236 Scaling search query volume 236 ■ Scaling search index size 236 Scaling a social network 241 10.4 Summary 248 Scripting Redis with Lua 249 11 11.1 Adding functionality without writing C 250 Loading Lua scripts into Redis 250 ■ Creating a new status message 252 11.2 Rewriting locks and semaphores with Lua 255 Why locks in Lua? 255 ■ Rewriting our lock 256 Counting semaphores in Lua 258 11.3 Doing away with WATCH/MULTI/EXEC 260 Revisiting group autocomplete 260 ■ Improving the marketplace, again 262 11.4 Sharding LISTs with Lua 265 Structuring a sharded LIST 265 ■ Pushing items onto the sharded LIST 266 ■ Popping items from the sharded LIST 268 Performing blocking pops from the sharded LIST 269 11.5 Summary 271 appendix A Quick and dirty setup 273 appendix B Other resources and references 281 index 284 foreword Redis was created about three years ago for practical reasons: basically, I was trying to do the impossible with an on-disk SQL database. I was handling a large write-heavy load with the only hardware I was able to afford—a little virtualized instance. My problem was conceptually simple: my server was receiving a stream of page views from multiple websites using a small JavaScript tracker. I needed to store the lat- est n page views for every site and show them in real time to users connected to a web interface, while maintaining a small history. With a peak load of a few thousand page views per second, whatever my database schema was, and whatever trade-offs I was willing to pick, there was no way for my SQL store to handle the load with such poor hardware. My inability to upgrade the hard- ware for cost concerns coupled with the feeling that to handle a capped list of values shouldn’t have been so hard, after all, gave me the idea of creating a throw-away pro- totype of an in-memory data store that could handle lists as a native data type, with constant-time pop and push operations on both sides of the lists. To make a long story short, the concept worked, I rewrote the first prototype using the C language, added a fork-based persistence feature, and Redis was born. Fast-forward to the present. After three years, the project has evolved in significant ways. We have a more robust system now, and with Redis 2.6 just released and the major work in progress being cluster and HA features, Redis is entering its maturity period.
Recommended publications
  • Redis and Memcached
    Redis and Memcached Speaker: Vladimir Zivkovic, Manager, IT June, 2019 Problem Scenario • Web Site users wanting to access data extremely quickly (< 200ms) • Data being shared between different layers of the stack • Cache a web page sessions • Research and test feasibility of using Redis as a solution for storing and retrieving data quickly • Load data into Redis to test ETL feasibility and Performance • Goal - get sub-second response for API calls for retrieving data !2 Why Redis • In-memory key-value store, with persistence • Open source • Written in C • It can handle up to 2^32 keys, and was tested in practice to handle at least 250 million of keys per instance.” - http://redis.io/topics/faq • Most popular key-value store - http://db-engines.com/en/ranking !3 History • REmote DIctionary Server • Released in 2009 • Built in order to scale a website: http://lloogg.com/ • The web application of lloogg was an ajax app to show the site traffic in real time. Needed a DB handling fast writes, and fast ”get latest N items” operation. !4 Redis Data types • Strings • Bitmaps • Lists • Hyperlogs • Sets • Geospatial Indexes • Sorted Sets • Hashes !5 Redis protocol • redis[“key”] = “value” • Values can be strings, lists or sets • Push and pop elements (atomic) • Fetch arbitrary set and array elements • Sorting • Data is written to disk asynchronously !6 Memory Footprint • An empty instance uses ~ 3MB of memory. • For 1 Million small Keys => String Value pairs use ~ 85MB of memory. • 1 Million Keys => Hash value, representing an object with 5 fields,
    [Show full text]
  • Redis - a Flexible Key/Value Datastore an Introduction
    Redis - a Flexible Key/Value Datastore An Introduction Alexandre Dulaunoy AIMS 2011 MapReduce and Network Forensic • MapReduce is an old concept in computer science ◦ The map stage to perform isolated computation on independent problems ◦ The reduce stage to combine the computation results • Network forensic computations can easily be expressed in map and reduce steps: ◦ parsing, filtering, counting, sorting, aggregating, anonymizing, shuffling... 2 of 16 Concurrent Network Forensic Processing • To allow concurrent processing, a non-blocking data store is required • To allow flexibility, a schema-free data store is required • To allow fast processing, you need to scale horizontally and to know the cost of querying the data store • To allow streaming processing, write/cost versus read/cost should be equivalent 3 of 16 Redis: a key-value/tuple store • Redis is key store written in C with an extended set of data types like lists, sets, ranked sets, hashes, queues • Redis is usually in memory with persistence achieved by regularly saving on disk • Redis API is simple (telnet-like) and supported by a multitude of programming languages • http://www.redis.io/ 4 of 16 Redis: installation • Download Redis 2.2.9 (stable version) • tar xvfz redis-2.2.9.tar.gz • cd redis-2.2.9 • make 5 of 16 Keys • Keys are free text values (up to 231 bytes) - newline not allowed • Short keys are usually better (to save memory) • Naming convention are used like keys separated by colon 6 of 16 Value and data types • binary-safe strings • lists of binary-safe strings • sets of binary-safe strings • hashes (dictionary-like) • pubsub channels 7 of 16 Running redis and talking to redis..
    [Show full text]
  • Performance at Scale with Amazon Elasticache
    Performance at Scale with Amazon ElastiCache July 2019 Notices Customers are responsible for making their own independent assessment of the information in this document. This document: (a) is for informational purposes only, (b) represents current AWS product offerings and practices, which are subject to change without notice, and (c) does not create any commitments or assurances from AWS and its affiliates, suppliers or licensors. AWS products or services are provided “as is” without warranties, representations, or conditions of any kind, whether express or implied. The responsibilities and liabilities of AWS to its customers are controlled by AWS agreements, and this document is not part of, nor does it modify, any agreement between AWS and its customers. © 2019 Amazon Web Services, Inc. or its affiliates. All rights reserved. Contents Introduction .......................................................................................................................... 1 ElastiCache Overview ......................................................................................................... 2 Alternatives to ElastiCache ................................................................................................. 2 Memcached vs. Redis ......................................................................................................... 3 ElastiCache for Memcached ............................................................................................... 5 Architecture with ElastiCache for Memcached ...............................................................
    [Show full text]
  • Hidden Gears of Your Application
    Hidden gears of your application Sergej Kurakin Problem ● Need for quick response ● Need for many updates ● Need for different jobs done ● Need for task to be done as different user on server side ● Near real-time job start ● Load distribution Job Queue ● You put job to queue ● Worker takes the job and makes it done Job Queue using Crons ● Many different implementations ● Perfect for small scale ● Available on many systems/servers ● Crons are limited to running once per minute ● Harder to distribute load Gearman Job Server ● Job Queue ● http://gearman.org/ ● C/C++ ● Multi-language ● Scalable and Fault Tolerant ● Huge message size (up to 4 gig) Gearman Stack Gearman Job Types Normal Job Background Job ● Run Job ● Run Job in ● Return Result Background ● No Return of Result Gearman Parallel Tasks Gearman Supported Languages ● C ● Java ● Perl ● C#/.NET ● NodeJS ● Ruby ● PHP ● Go ● Python ● Lisp Job Priority ● Low ● Normal ● High Gearman Worker Example <?php // Reverse Worker Code $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction("reverse", function ($job) { return strrev($job->workload()); }); while ($worker->work()); Gearman Client Example <?php // Reverse Client Code $client = new GearmanClient(); $client->addServer(); print $client->do("reverse", "Hello World!"); Gearman Client Example <?php // Reverse Client Code $client = new GearmanClient(); $client->addServer(); $client->doBackground("reverse", "Hello World!"); Running Worker in Background ● CLI ● screen / tmux ● supervisord - http://supervisord.org/ ● daemontools
    [Show full text]
  • Scaling Uber with Node.Js Amos Barreto @Amos Barreto
    Scaling Uber with Node.js Amos Barreto @amos_barreto Uber is everyone’s Private driver. REQUEST! RIDE! RATE! Tap to select location Sit back and relax, tell your Help us maintain a quality service" driver your destination by rating your experience YOUR DRIVERS 4 Your Drivers UBER QUALIFIED RIDER RATED LICENSED & INSURED Uber only partners with drivers Tell us what you think. Your From insurance to background who have a keen eye for feedback helps us work with checks, every driver meets or customer service and a drivers to constantly improve beats local regulations. passion for the trade. the Uber experience. 19 LOGISTICS 4 #OMGUBERICECREAM 22 UberChopper #OMGUBERCHOPPER 22 #UBERVALENTINES 22 #ICANHASUBERKITTENS 22 Trip State Machine (Simplified) Request Dispatch Accept Arrive End Begin 6 Trip State Machine (Extended) Expire / Request Dispatch (1) Reject Dispatch (2) Accept Arrive End Begin 6 OUR STORY 4 Version 1 • PHP dispatch PHP • Outsourced to remote contractors in Midwest • Half the code in spanish Cron • Flat file " • Lifetime: 6-9 months 6 33 “I read an article on HackerNews about a new framework called Node.js” """"Jason Roberts" Tradeoffs • Learning curve • Database drivers " " • Scalability • Documentation" " " • Performance • Monitoring" " " • Library ecosystem • Production operations" Version 2 • Lifetime: 9 months " Node.js • Developed in house " • Node.js application • Prototyped on 0.2 • Launched in production with 0.4 " • MongoDB datastore “I really don’t see dispatch changing much in the next three years” 33 Expect the
    [Show full text]
  • Redis-Lua Documentation Release 2.0.8
    redis-lua Documentation Release 2.0.8 Julien Kauffmann October 12, 2016 Contents 1 Quick start 3 1.1 Step-by-step analysis...........................................3 2 What’s the magic at play here ?5 3 One step further 7 4 What happens when I make a mistake ?9 5 What’s next ? 11 6 Table of contents 13 6.1 Basic usage................................................ 13 6.2 Advanced usage............................................. 14 6.3 API.................................................... 16 7 Indices and tables 19 i ii redis-lua Documentation, Release 2.0.8 redis-lua is a pure-Python library that eases usage of LUA scripts with Redis. It provides script loading and parsing abilities as well as testing primitives. Contents 1 redis-lua Documentation, Release 2.0.8 2 Contents CHAPTER 1 Quick start A code sample is worth a thousand words: from redis_lua import load_script # Loads the 'create_foo.lua' in the 'lua' directory. script= load_script(name='create_foo', path='lua/') # Run the script with the specified arguments. foo= script.get_runner(client=redis_client)( members={'john','susan','bob'}, size=5, ) 1.1 Step-by-step analysis Let’s go through the code sample step by step. First we have: from redis_lua import load_script We import the only function we need. Nothing too specific here. The next lines are: # Loads the 'create_foo.lua' in the 'lua' directory. script= load_script(name='create_foo', path='lua/') These lines looks for a file named create_foo.lua in the lua directory, relative to the current working directory. This example actually considers that using the current directory is correct. In a production code, you likely want to make sure to use a more reliable or absolute path.
    [Show full text]
  • Redis in Action
    IN ACTION Josiah L. Carlson FOREWORD BY Salvatore Sanfilippo MANNING Redis in Action Redis in Action JOSIAH L. CARLSON MANNING Shelter Island For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 261 Shelter Island, NY 11964 Email: [email protected] ©2013 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Elizabeth Lexleigh 20 Baldwin Road Technical proofreaders: James Philips, Kevin Chang, PO Box 261 and Nicholas Lindgren Shelter Island, NY 11964 Java translator: Eric Van Dewoestine Copyeditor: Benjamin Berg Proofreader: Katie Tennant Typesetter: Gordan Salinovic Cover designer: Marija Tudor ISBN 9781935182054 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – MAL – 18 17 16 15 14 13 To my dear wife, See Luan, and to our baby girl, Mikela brief contents PART 1 GETTING STARTED .
    [Show full text]
  • VSI's Open Source Strategy
    VSI's Open Source Strategy Plans and schemes for Open Source so9ware on OpenVMS Bre% Cameron / Camiel Vanderhoeven April 2016 AGENDA • Programming languages • Cloud • Integraon technologies • UNIX compability • Databases • Analy;cs • Web • Add-ons • Libraries/u;li;es • Other consideraons • SoDware development • Summary/conclusions tools • Quesons Programming languages • Scrip;ng languages – Lua – Perl (probably in reasonable shape) – Tcl – Python – Ruby – PHP – JavaScript (Node.js and friends) – Also need to consider tools and packages commonly used with these languages • Interpreted languages – Scala (JVM) – Clojure (JVM) – Erlang (poten;ally a good fit with OpenVMS; can get good support from ESL) – All the above are seeing increased adop;on 3 Programming languages • Compiled languages – Go (seeing rapid adop;on) – Rust (relavely new) – Apple Swi • Prerequisites (not all are required in all cases) – LLVM backend – Tweaks to OpenVMS C and C++ compilers – Support for latest language standards (C++) – Support for some GNU C/C++ extensions – Updates to OpenVMS C RTL and threads library 4 Programming languages 1. JavaScript 2. Java 3. PHP 4. Python 5. C# 6. C++ 7. Ruby 8. CSS 9. C 10. Objective-C 11. Perl 12. Shell 13. R 14. Scala 15. Go 16. Haskell 17. Matlab 18. Swift 19. Clojure 20. Groovy 21. Visual Basic 5 See h%p://redmonk.com/sogrady/2015/07/01/language-rankings-6-15/ Programming languages Growing programming languages, June 2015 Steve O’Grady published another edi;on of his great popularity study on programming languages: RedMonk Programming Language Rankings: June 2015. As usual, it is a very valuable piece. There are many take-away from this research.
    [Show full text]
  • Symantec Web Security Service Policy Guide
    Web Security Service Policy Guide Revision: NOV.07.2020 Symantec Web Security Service/Page 2 Policy Guide/Page 3 Copyrights Broadcom, the pulse logo, Connecting everything, and Symantec are among the trademarks of Broadcom. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Copyright © 2020 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. For more information, please visit www.broadcom.com. Broadcom reserves the right to make changes without further notice to any products or data herein to improve reliability, function, or design. Information furnished by Broadcom is believed to be accurate and reliable. However, Broadcom does not assume any liability arising out of the application or use of this information, nor the application or use of any product or circuit described herein, neither does it convey any license under its patent rights nor the rights of others. Policy Guide/Page 4 Symantec WSS Policy Guide The Symantec Web Security Service solutions provide real-time protection against web-borne threats. As a cloud-based product, the Web Security Service leverages Symantec's proven security technology, including the WebPulse™ cloud community. With extensive web application controls and detailed reporting features, IT administrators can use the Web Security Service to create and enforce granular policies that are applied to all covered users, including fixed locations and roaming users. If the WSS is the body, then the policy engine is the brain. While the WSS by default provides malware protection (blocks four categories: Phishing, Proxy Avoidance, Spyware Effects/Privacy Concerns, and Spyware/Malware Sources), the additional policy rules and options you create dictate exactly what content your employees can and cannot access—from global allows/denials to individual users at specific times from specific locations.
    [Show full text]
  • Release Notes Micro Focus the Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK
    Micro Focus Visual COBOL 2.3 for ISVs Release Notes Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK http://www.microfocus.com Copyright © Micro Focus 2009-2015. All rights reserved. MICRO FOCUS, the Micro Focus logo and Visual COBOL are trademarks or registered trademarks of Micro Focus IP Development Limited or its subsidiaries or affiliated companies in the United States, United Kingdom and other countries. All other marks are the property of their respective owners. 2015-11-09 ii Contents Micro Focus Visual COBOL 2.3 for ISVs Release Notes .................................5 System Requirements ........................................................................................6 System Requirements for Visual COBOL for Visual Studio ................................................ 6 Hardware Requirements .......................................................................................... 6 Operating Systems Supported ................................................................................. 6 Software Requirements ............................................................................................6 System Requirements for Visual COBOL for Eclipse (Windows) ........................................8 Hardware Requirements .......................................................................................... 8 Operating Systems Supported ................................................................................. 8 Software requirements ............................................................................................
    [Show full text]
  • Item 3F. LBR-2018-19-039 Joe Goode
    CITY AND COUNTY OF SAN FRANCISCO LONDON N. BREED, MAYOR OFFICE OF SMALL BUSINESS REGINA DICK-ENDRIZZI, DIRECTOR Legacy Business Registry Staff Report HEARING DATE JUNE 24, 2019 JOE GOODE PERFORMANCE GROUP Application No.: LBR-2018-19-039 Business Name: Joe Goode Performance Group Business Address: 499 Alabama Street, #150 District: District 9 Applicant: Adriana Marcial, Executive Director Nomination Date: February 7, 2019 Nominated By: Mayor London N. Breed Staff Contact: Richard Kurylo [email protected] BUSINESS DESCRIPTION Choreographer Joe Goode established Joe Goode Performance Group (JGPG) in 1986 with the mission of promoting understanding, compassion, and tolerance among people through the innovative use of dance and theater. JGPG is currently located at 401 Alabama Street in the Project Artaud building, an arts complex in San Francisco's Mission District. Over the past 32 years, JGPG has performed an annual Home Season in San Francisco at venues such as the old Footworks Studio, Cowell Center for Performing Arts, Yerba Buena Center for the Arts, and Z Space. JGPG has also produced site-specific and has offered dance and movement classes in various studios throughout the city since its inception. Before finding a permanent home in the Mission/Potrero Hill in 2011, JGPG acquired a loyal following due to its consistent annual Home Season presentations. JGPG has brought national and international attention to the San Francisco arts scene as the company by touring throughout the U.S. and in Canada, Europe, South America, the Middle East, and Africa. From the beginning, Goode's public stance as an out gay artist making work that sought to identify the commonality of all people helped to de-stigmatize issues of sexuality and gender identity and used the arts as a healing tool in face of the AIDS epidemic.
    [Show full text]
  • Technical Update & Roadmap
    18/05/2018 VMS Software Inc. (VSI) Technical Update & Roadmap May 2018 Brett Cameron Agenda ▸ What we've done to date ▸ Product roadmap ▸ TCP/IP update ▸ Upcoming new products ▸ Support roadmap ▸ Storage ▸ x86 update, roadmap, and licensing ▸ x86 servers ▸ ISV programme ▸ Other stuff 1 18/05/2018 WhatDivider we’ve with done to date OpenVMS releases to date 3 OpenVMS I64 releases: Plus … Two OpenVMS Alpha Japanese version • V8.4-1H1 – Bolton releases: • DECforms V4.2 • – June 2015 V8.4-2L1 – February • DCPS V2.8 2017 • V8.4-2 - Maynard • FMS V2.6 • Standard OpenVMS – March 2016 • DECwindows Motif V1.7E release (Hudson) • V8.4-2L1 – Hudson • V8.4-2L2 - April 2017 – August 2016 • Performance build, EV6/EV7 (Felton) 2 18/05/2018 Products introduced from 2015 to date Technical achievements to date 65 Layered Product Releases 12 Open Source Releases OpenVMS Releases 4 VSI OpenVMS Statistics 515 VSI Defect Repairs 179 New Features Since V7.3-2 0 100 200 300 400 500 600 3 18/05/2018 Defect repairs 515 Total Defect Repairs 343 Source - Internal BZ VSI - Defect Repairs 118 Source - External BZ 54 Source - Quix 0 100 200 300 400 500 600 Testing hours Test Hours Per VSI OpenVMS Version TKSBRY IA64 V8.4-2L1 Test Hours V8.4-2 V8.4-1H1 0 20000 40000 60000 80000 100000 120000 140000 4 18/05/2018 ProductDivider roadmap with OpenVMS Integrity operating environment Released Planned BOE Components: • NOTARY V1.0 BOE Components: • • V8.4-2L1 operating system OpenSSL V1.02n • CSWS additional modules • • ANT V1.7-1B Perl V5.20-2A • PHP additional modules •
    [Show full text]