Vysoké Učení Technické V Brně Brno University of Technology

Total Page:16

File Type:pdf, Size:1020Kb

Vysoké Učení Technické V Brně Brno University of Technology VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA PRÁCE S HISTORICKÝMI MAPAMI NA MOBILNÍM ZAŘÍZENÍ DIPLOMOVÁ PRÁCE MASTER’S THESIS AUTOR PRÁCE Bc. MARTIN URBAN AUTHOR BRNO 2014 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA PRÁCE S HISTORICKÝMI MAPAMI NA MOBILNÍM ZAŘÍZENÍ INTERACTION WITH OLD MAPS ON MOBILE DEVICES DIPLOMOVÁ PRÁCE MASTER’S THESIS AUTOR PRÁCE Bc. MARTIN URBAN AUTHOR VEDOUCÍ PRÁCE Ing. VÍTĚZSLAV BERAN, Ph.D. SUPERVISOR BRNO 2014 Abstrakt Cílem této diplomové práce je experimentovat s nejmodernějšími webovými technologiemi a navrhnout nový postup pro tvorbu mobilních aplikací. Díky navženým postupùm je možné vytváøet mobilní aplikace, které jsou multiplatformní a zároveň téměř nerozpoznatelné od nativních. Dùraz je kladený na výkon a nativní chování uživatelského rozhraní. Popsané postupy jsou demonstrované na aplikaci pro práci s historickými mapami, která je schopna v reálném èase zobrazovat mapy z historických archivù po celém světě. Testy demonstrační aplikace vykazují oproti standardním postupùm tvorby webových aplikací rapidní zrychlení. Abstract The goal of this thesis is to experiment with the latest web technologies and to design new process for mobile application creation. It is possible to create multiplatform applications which are almost unrecognizable from native applications by proposed procedures. It is focused on performance and native behaviour of the user interface in this thesis. Described practices are demonstrated on application designed for work with historical maps, which is able to show maps from historical archives whole over world real-time. Rapid acceleration has been showed on the demonstrative application compared to standard process of creation of web applications. Klíčová slova mobilní aplikace, webová aplikace, historické mapy, web worker, CSS hardvérové akcelerace, HTML5, CSS3, vícevláknový Javascript, Google Closure Tools, výkonný web, multiplat- formní mobilní aplikace, PhoneGap, moderní webové technologie Keywords mobile application, web application, historical maps, web worker, CSS hardware accele- ration, HTML5, CSS3, multithreaded Javascript, Google Closure Tools, web performance, multiplatfom mobile development, PhoneGap, modern web technologies Citace Martin Urban: Práce s historickými mapami na mobilním zařízení, diplomová práce, Brno, FIT VUT v Brně, 2014 Práce s historickými mapami na mobilním zařízení Prohlášení Prohla¹uji, že jsem tuto diplomovou práci vypracoval samostatně pod vedením Ing. Vítěz- slava Berana Ph.D. a uvedl jsem v¹echny literární prameny a publikace, ze kterých jsem èerpal. Další informace mi poskytl Mgr. Peter Pøidal ze spoleènosti Klokan Technologies. ....................... Martin Urban 31. èervence 2014 Poděkování Děkuji svému vedoucímu Ing. Vítězslavu Beranovi Ph.D. za odborné vedení a podněty, které mi pri řešení tohoto projektu poskytl. Dále děkuji Mgr. Petru Pøidalovi ze spoleè- nosti Klokan Technologies za odborné konzultace a pomoc v oblasti historických map a za možnost vyvíjet reálně nasaditelnou aplikaci s existující uživatelskou základnou. © Martin Urban, 2014. Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informa- čních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů. Obsah 1 Úvod 3 2 Platformy a technológie4 2.1 Frameworky pre sprístupnenie API mobilného zariadenia...........4 2.2 Frameworky pre tvorbu webových používateľských rozhraní.........5 2.3 Google Closure Tools...............................7 2.4 Kartografické dáta a mobilné zariadenia....................8 3 Komunikaèné kanály 14 3.1 Získavanie dát zo serveru............................ 14 3.2 Získavanie máp zo serveru............................ 15 3.3 iFramy a komunikácia medzi nimi........................ 16 3.4 Prístup k API zariadenia............................ 18 4 Výkon mobilnej aplikácie 19 4.1 Hardvérová akcelerácia animácii......................... 19 4.2 Využitie potenciálu viacjadrových procesorov................. 23 4.3 Moduly v JS................................... 26 4.4 Šablóny...................................... 28 5 Používateľské rozhranie a interakcia 31 5.1 Interakcia s mapou a inými zložitejšími prvkami............... 31 5.2 Responzívny dizajn a detekcia zariadení.................... 32 5.3 Prednačítavanie obrázkov............................ 33 5.4 Rozdiely medzi natívnymi a webovými aplikáciami.............. 33 5.5 Ovládanie dotykových aplikácií......................... 35 6 Demon¹traèná aplikácia a testovanie 39 6.1 Analýza a návrh aplikácie............................ 39 6.2 Realizácia aplikácie................................ 43 6.3 Testovanie aplikácie............................... 47 7 Záver 58 A Obsah CD 60 B In¹talácia a spustenie 61 C Vlastnosti a nastavenia pre natívny vzhľad webovej aplikácie 63 1 D Trieda pre JSONP vo Web Workeri 65 E Plagát 68 2 Kapitola 1 Úvod Vzhľadom k vysokej popularite mobilných zariadení, sa väčšina desktopových aplikácií pre- súva práve na mobilné platformy. Napriek tomu neexistuje jednoduché rie¹enie pre vývoj natívnych mobilných aplikácií na viacerých platformách súèasne. Možným riešením tohto problému je tvorba tzv. hybridných aplikácií, teda webových aplikácií s prístupom k har- dvéru zariadenia. Ak napríklad vyvíjaná aplikácia pracuje s dátovo nároènými obrazovými informáciami, akými sú aj historické mapy vo vysokom rozlíšení, výkon poskytovaný ¹tan- dardnými webovými technológiami nestaèí. Účel tejto práce je experimentovanie s najmodernejšími webovými technológiami a ná- vrhnutie vhodného prístupu k tvorbe mobilných aplikácií. Dôraz je kladený na výkon, plat- formovú nezávislos» a plynulé používateľské rozhranie, ktoré sa èo najviac podobá tomu z natívnych aplikácií. Táto práca je èlenená do 7 kapitol. Kapitola2 obsahuje prehľad existujúcich techno- lógií pre tvorbu hybridných a webových aplikácií. Ïalej obsahuje prehľad technológií pre prácu s mapami a ukážky existujúcich mapových projektov. Ïal¹ie tri kapitoly tvoria jadro práce. Zaoberajú sa skúmaním jednotlivých technológií a návrhom ich použitia v kombinácií s inými technológiami. Kapitola3 sa orientuje na problematiku komunikácie so serverom ako i medzi jednotlivými èas»ami aplikácie. Kapitola4 sa zaoberá vylep¹ovaním výkonu a kapitola5 je zameraná na používateľské rozhranie. Kapitola6 je venovaná aplikácií, ktorá demon¹truje navrhnuté postupy a rie¹enia. Návrh a realizácia aplikácie je nasledo- vaná podkapitolou o testovaní. Testovaný je prínos navrhnutých postupov a technológií na implementácií demon¹traènej aplikácie. Závereèná kapitola7 obsahuje zhrnutie výsledkov a smery ďalšieho vývoja demon¹traènej aplikácie. Demon¹traèná aplikácia slúži na prehliadanie historických máp, ktoré sú sprístupňované rôznymi svetovými i českými in¹titúciami. Snaží sa ich atraktívnym spôsobom sprístupňo- va» ¹irokej verejnosti. Týmto demon¹traèná aplikácia napĺňa jeden z pozitívnych trendov modernej doby, ktorým je záchrana kultúrneho dedièstva - napríklad aj historických doku- mentov a máp. 3 Kapitola 2 Platformy a technológie Multiplatformový vývoj mobilných aplikácií v súèasnosti nie je úplne vyrie¹ený problém. Každá spoloènos» si presadzuje svoj vývojový jazyk, prostredie a podporované technológie. Napriek tomu existujú možnosti, akými tieto obmedzenia obísť. Jedným zo spôsobov ako to dosiahnu» je využitie webových technológií. Veľké množstvo aplikácií práve zobrazuje informácie prostredníctvom webového rozhrania, a teda hlavná èas» aplikácie beží v rámci webového rámca. Do tejto kategórie patria napríklad mapové aplikácie. Ak sa rozhliadneme po existujúcich frameworkoch, ktoré umožňujú tvorbu natívnych aplikácii pre rôzne platformy, nájdeme ich hneď desiatky. Zvyèajne sa jedná o kombiná- ciu HTML5, CSS3 a javascriptu. Môže sa jedna» o kompletné rie¹enie ale i kombináciu frameworkov. Jeden pre vlastnú implementáciu funkènosti webovej aplikácie pomocou ja- vascriptu, ktorý sprístupňuje API mobilného zariadenia. Druhý pre používateľské rozhranie s optimalizovaným CSS pre rôzne zariadenia. 2.1 Frameworky pre sprístupnenie API mobilného zariade- nia Pri tvorbe multiplatformových aplikácií je potrebné použiť framework ktorý zabezpečí vrstvu (web-to-native), ktorý vyrovná rozdiely medzi jednotlivými platformami a zjednote- ným spôsobom sprístupní API zariadení prostredníctvom javascriptu. U webových aplikácii sa v podstate začlení rámec s internetovým prehliadaèom do natívnej aplikácie. Existuje niekoľko frameworkov a každý má podobné vlastnosti a možnosti. Každý spĺňa to èo je pre vývoj nutne potrebné a pridáva nieèo ¹peciálne, čím si snaží získa» používateľov. Pre bežných používateľov sú vhodnej¹ie kompletné rie¹enia, ktoré poskytujú Intel App's framework1 alebo Appcelerator Titanium2. Framework od Intelu je komplexnejší a po- skytuje preddefinované používateľské prvky pre jednoduch¹iu tvorbu UI, ktoré napodobňujú natívne aplikácie. Je možné využíva» rôzne šablóny pre rôzne platformy. Javascriptová kniž- nica je podmnožinou populárnej jQuery knižnice. Je možné použiť i plnohodnotnú jQuery knižnicu pre maximalizáciu funkcionality. Dokumentácia a kvalitné návody sú samozrej- mos»ou. Oproti Appcelerator Titanium nepodporuje
Recommended publications
  • Job Description: Riverside Research's Engineering and Support Solutions
    Job Description: Riverside Research’s Engineering and Support Solutions Directorate has an opening in the Dayton, Ohio area for a Software Developer. This candidate will have the opportunity to develop a web-based client application and backend server for a highly scalable physics tool while setting direction and leading an assisting support team, with a focus on the use of permissively licensed programming languages and libraries. Job Responsibilities: • Utilizing languages like C and C++ • Working with JavaScript/ECMAscript and its language extensions • User interface development • Creating 3D renderings • Using revision control systems • Other duties as assigned Requirements: • Experience with compiled languages like C and C++ • Experience with Javascript/ECMAscript and its language extensions like dart (dart2js), TypeScript, Google Closure Tools, Google Web Toolkit, Haxe • Experience with user interface development toolkits like Qt, GTK, VTK, etc. • Experience with 3D rendering libraries like OpenGL, OpenSceneGraph, etc. • Experience with revision control systems like git, svn, mercurial, etc. Desired experience: • Experience working in projects comprising >100,000 sloc • Development of browser-centric 3D applications (in particular utilization of WebGL) • Experience combining web client and server backend components into a single thick client application • Development experience on Unix and/or Linux systems • Experience with WebGL • Familiarity with Unix shell scripting and supporting tools like bash, awk, sed • Usage of CAD systems
    [Show full text]
  • Augmenting Information Flow for Visual Privacy
    Augmenting Information Flow for Visual Privacy by Ian Spiro A dissertation submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy Department of Computer Science New York University September 2013 Professor Christoph Bregler c Ian Spiro All Rights Reserved, 2013 Acknowledgements First and foremost, I would like to thank my partner Molly Tanenbaum for her love, patience, good cheer, and support. I'm excited for our next chapter and looking forward to the day that we can enjoy spiced lamb shanks in a hot tub. Thanks to Chris Bregler, my research advisor and patron. He encouraged me to explore new intellectual paths and brought me along for some wild rides. Thanks to Helen Nissenbaum for leading the Privacy Research Group and for the great discussions in which we managed to bridge the interdisciplinary abyss. Thanks to my family, Mom, Dad, and Miranda. Thanks to the Motion Chain alpha users who tested and invented charades: Phil Dhingra, Raphael Holmes, Kiefer Katovich, Carrie Kemper, Doug Kenter, Devon Sherman. I met some great people at NYU who made the experience considerably more enjoyable: Clement Farabet, Yotam Gingold, Eric Hielscher, Adrian Secord, Kirill Smolskiy, Murphy Stein, Graham Taylor, Matthew Tierney, and George Williams. iv Preface The work presented in chapter 2 is based upon two previously published papers. The first paper appeared in Computer Vision and Pattern Recognition Workshops (CVPRW 2010) and was co-authored with Graham Taylor, George Williams, and Christoph Bregler [80]. The second paper was presented at Collective Intelligence 2012 [79]. This work was co-authored with Thomas Huston and Christoph Bregler.
    [Show full text]
  • Prestans Documentation Release 2.0
    Prestans Documentation Release 2.0 Anomaly Software November 02, 2016 Contents 1 Installation 3 1.1 Software Requirements.........................................3 1.2 Deployment notes............................................4 1.2.1 Apache + mod_wsgi......................................4 1.2.2 AppEngine...........................................4 1.3 Unit testing................................................4 2 Framework Design 7 2.1 Exceptions................................................7 2.2 HTTP Header Reference.........................................7 2.2.1 Content Negotiation.......................................8 2.2.2 Custom headers.........................................8 3 Routing & Handling Requests 11 3.1 Serializers & DeSerializers........................................ 11 3.2 Routing Requests............................................. 12 3.2.1 Regex & URL design primer.................................. 12 3.2.2 Using Request Router...................................... 13 3.3 Handling Requests............................................ 14 3.4 Constructing Response.......................................... 17 3.4.1 Minifying Content....................................... 18 3.4.2 Serving Binary Content..................................... 18 3.5 Raising Exceptions............................................ 19 3.5.1 Unsupported Vocabulary or Content Type........................... 19 3.5.2 Configuration Exceptions.................................... 19 3.5.3 Data Validation Exceptions..................................
    [Show full text]
  • Building a Complete Language in the Browser
    The DOPPIO JVM: Building a Complete Language in the Browser John Vilk CJ Carey Jez Ngy Emery D. Berger School of Computer Science yDept. of Computer Science University of Massachusetts, Amherst Amherst College Amherst, MA 01003 Amherst, MA 01002 {jvilk,ccarey,emery}@cs.umass.edu, [email protected] Abstract 1. Introduction Web browsers are rapidly overtaking native environments as Recent dramatic improvements in JavaScript performance the central focus of application development. Developers are have made it possible to write a wide range applications building increasingly rich and responsive applications that that run entirely inside the browser. Examples of these run entirely in the browser. However, web applications must include full office suites [7, 16], instant messengers [4], and be written in JavaScript, the only language available in all photo editors [6]. Browsers are an attractive implementation browsers. Developers thus cannot reuse existing code in other substrate because web applications can run unchanged across languages; rewriting this code in JavaScript can be onerous desktop, mobile, and tablet platforms. and error-prone. However, these applications must be written specifically An attractive alternative is to enable the execution of stan- in JavaScript and tailored to the browser environment. Devel- dard programming languages within the browser. This ap- opers cannot take advantage of existing bodies of well-tested proach would let programmers use familiar languages and code in languages like Java, and must instead rewrite
    [Show full text]
  • Become a Ninja with Angular2 (Free Sample)
    Become a ninja with Angular2 (free sample) Ninja Squad Table of Contents 1. Free sample . 1 2. Introduction. 2 3. A gentle introduction to ECMASCRIPT 6 . 4 3.1. Transpilers . 4 3.2. let . 5 3.3. Constants . 6 3.4. Creating objects. 7 3.5. Destructuring assignment . 7 3.6. Default parameters and values . 9 3.7. Rest operator . 11 3.8. Classes . 12 3.9. Promises . 14 3.10. Arrow functions . 18 3.11. Sets and Maps . 21 3.12. Template literals . 22 3.13. Modules . 22 3.14. Conclusion . 24 4. Going further than ES6 . 25 4.1. Dynamic, static and optional types . 25 4.2. Enters TypeScript . 26 4.3. A practical example with DI . 26 5. Diving into TypeScript . 29 5.1. Types as in TypeScript. 29 5.2. Enums . 30 5.3. Return types. 30 5.4. Interfaces . 31 5.5. Optional arguments . 31 5.6. Functions as property . 32 5.7. Classes . 32 5.8. Working with other libraries . 34 5.9. Decorators . 35 6. The wonderful land of Web Components . 38 6.1. A brave new world. 38 6.2. Custom elements . 38 6.3. Shadow DOM . 39 6.4. Template . 40 6.5. HTML imports . 41 6.6. Polymer and X-tag . 41 7. Grasping Angular’s philosophy . 44 8. From zero to something . 48 8.1. Developing and building a TypeScript app . 48 8.2. Our first component . 50 8.3. Bootstrapping the app . 52 8.4. From zero to something better with angular-cli. 55 9. End of the free sample .
    [Show full text]
  • On Source-To-Source Compilers
    See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/303348270 On source-to-source compilers Article · April 2016 CITATIONS READS 2 1,257 2 authors: Evgeniy Ilyushin Dmitry Namiot Lomonosov Moscow State University Lomonosov Moscow State University 5 PUBLICATIONS 5 CITATIONS 116 PUBLICATIONS 788 CITATIONS SEE PROFILE SEE PROFILE Some of the authors of this publication are also working on these related projects: Pentagon communications (AIN, IP, cybersecurity, etc), digital railway (GSM-R, LTE/4G, 5G) View project AI in software engineering View project All content following this page was uploaded by Evgeniy Ilyushin on 19 May 2016. The user has requested enhancement of the downloaded file. International Journal of Open Information Technologies ISSN: 2307-8162 vol. 4, no. 5, 2016 On source-to-source compilers Evgeniy Ilyushin, Dmitry Namiot Abstract - Computer technologies like computer languages and hardware have been involving for past few decades. We II. THE ARCHITECTURE AND REQUIREMENTS have a lot of computer programs which need to maintain and rewrite when releasing new equipment or technology. It is too As with the traditional compiler, an architecture of transpiler can expensive and unreliable to rewrite the whole code from be divided into two parts – front-end and back-end. The front-end scratch. Also the spread of portable devices, which usually translates the source language into an intermediate representation. have multi-core processors, increase the demands on the The back-end works with the internal representation to produce quality of the developed programs, their effective work in code in the output language.
    [Show full text]
  • Here Is My Resume
    Kyle Storrier [email protected] | kylestorrier.com | github.com/kyle-storrier Education University of Calgary (September 2016-Present) • BSc., Computer Science (Honours) with a Mathematics Minor (Expected Graduation: December 2020) • Coursework: Discrete Math, Linear Methods, Statistics, Formal Logic, Computability, Probability, Computing Machinery, Programming Paradigms, Algorithms, Combinatorics and Graph Theory, Software Engineering, Networks, Operating Systems, Retrogames, Quantum Computing, Abstract Algebra, Computer Security, Cryptography, Viruses and Malware, Number Theory • GPA: 4.0 Work Experience • Google: Software Engineering Intern (May 2020-August 2020) – San Francisco, California, USA o Will work on the Identity team to create backend software for authentication and authorization. • Google: Software Engineering Intern (May 2019-August 2019) – Kitchener-Waterloo, Ontario, Canada o Collaborated with engineers from several engineering teams to create the user interface and backend for a web-based healthcare data analysis tool. o Implemented user interface components using CSS, TypeScript, and Java with data retrieved from the Google Cloud Healthcare API. o Created the server for the project using a microservice architecture. o Independently researched and setup static content serving for multiple projects. • Google: Engineering Practicum Intern (May 2018-August 2018) – Kitchener-Waterloo, Ontario, Canada o Enhanced the user interface for Gmail Offline using CSS and JavaScript with the Closure Library. o Developed and maintained unit tests written in JavaScript using JSUnit. Technical Skills • Programming Languages (Proficient): Java, JavaScript, TypeScript, C • Programming Languages (Used): Python, Haskell, Prolog, C#, C++, ARM and x86 Assembly Language, HTML, Markdown, CSS • Tools: Google Closure Tools for JavaScript, Eclipse, git, Mercurial, Protocol Buffers, Visual Studio Projects and Presentations • Honours Research Project: Applying Zero-Knowledge Proofs to Distributed Point Functions (Supervisor: Dr.
    [Show full text]
  • Download Here the PDF “Brand As a System: the Local Meets the Global”
    Brand as a System: The Local meets the Global Fang Wan, Ph.D. Professor of Marketing Ross Johnson Research Fellow Asper School of Business University of Manitoba, Canada The 5th International Research Symposium on Branding in Emergent Markets, Dec 10, Nanjing 万方 Fang Wan, Ph.D. 万方博士, ,博士导师 品牌中国规划院理事(国家级智库),品牌思为俱乐部联合创始人 Director of International Executive Program, 国际高管培训项目总监 Professor of Marketing 市场营销教授 Ross Johnson Research Fellow 罗斯约翰逊研究员 Asper School of Business艾斯伯商学院 University of Manitoba, Canada 加拿大曼尼托巴大学 希伯来大学,泰国UTCC,中欧商学院,新加坡国立,南洋理工,清华,香港中文, 香港理工,河北理工,陕西理工,西南财大,讲座, 客座海外教授; Hebrew University,. UTCC Thailand, CEIBS, National University of Singapore, Nanyang Technological University, Hong Kong Polytech University, Qinghua, Chinese U of Hong Kong, Hebei Technological University, Shannxi Technological University, SWUFE, Managerial Hat . Brand China Planning and Strategy Institute 品牌中国规划院理事,海外部长,中国 . Executive Committee Member of Einstein Legacy Project 爱因斯坦品 牌执行董事, 以色列 . Founder, Book Club of Chinese Chamber of Commerce, 加拿大 华商会读书会创始人 . Co-founder, Fella Club, 成都FELLA学社联合创始人 . Co-founder, Branding Thought and Action, 品牌思为俱乐部联合 创始人,清华大数据协会 我的穿梭 My Journey 品牌实战 品牌理论 Brand Practice Brand Theory 品牌实战家 品牌学者 Coach Researcher 西方 中国 China West 世界 Global Interbrand: Top 100 Global Brands 2015 5 6 7 8 Part of My job during the past few years: Decoding/coaching Learning/imitation/emulation/Innovation 9 洞见 insight 真相 truth 开脑洞 open up mind 新的视角 new 多元视角 diverse perspectives 整合,运用, 落地 My Integrate, landing Intentions: 执行,跟踪, 反思 我的框架 Execute, track, reflect Three Anecdotes Emulation Imitation Learning of what? 11 Dove Real Beauty Models Functional Defining Debunking Self Evolution of Beginning Beauty Myths Acceptance Evolution Authentic Happy Me: Dove Ideal Me: Mainstream 99% 14 What branding is NOT? 15 Visible and Invisible Facets of Branding Brand artifacts: Customers Visible e.g., logos, graphics, Choice/purchase Marketing tactics Internal brand Employees: processes: their endorsement corporate culture Invisible Drivers Mindset of leaders: Brand Soul: long vs.
    [Show full text]
  • 1623 Fairorchard Ave San Jose CA 95125 (408) 723-1925 E-Mail: [email protected]
    Robert Bowdidge 1623 Fairorchard Ave San Jose CA 95125 (408) 723-1925 e-mail: [email protected] INTERESTS: Make life better for programmers by improving both their tools and their platforms. EXPERIENCE: 5/15 - present Sabbatical Year. Started 3d printing company (www.drycreekmodels.com), family, travel. 12/08 - 5/15: Senior Software Engineer, Google, Mountain View CA. 11/14 - 5/15: Engineer, Google-Wide Profiling team. Developing large-scale distributed system for profiling all jobs running across multiple data centers, dynamically adjusting profiling rates to ensure maxi- mum data with minimum overhead. Built servers handling configuration of profiling rates and gathering of completed profiles. Coded in Go. 12/12 - 11/14: Engineer, Code Cultivation team. Led work to remove all references to an older, widely used C++ API for one of Google’s core data structures across Google’s entire codebase. Convinced code owners to rewrite code, automatically converted other code using Clang-based refactoring tools, and personally rewrote portions of Google infrastructure when necessary. Team responsible for around 1 million lines of code changed. 3/12 - 12/12: Manager, Code Health Tooling team. Managed five engineers and three projects finding bugs in Google’s Java code, cutting compile and test times by removing unneeded dependencies in our build system, and tracking down performance issues in C++ servers. 7/10 - 9/12: Technical lead/manager, XRay C++ profiling tools team. Developed profiling tools for diagnosing long-latency RPCs on production servers. Implemented web-based trace browser in Python. Worked with teams across Google to adopt the tools and interpret results.
    [Show full text]
  • Eliminating Code Duplication in Cascading Style Sheets
    Eliminating Code Duplication in Cascading Style Sheets Davood Mazinanian A Thesis In the Department of Computer Science and Software Engineering Presented in Partial Fulfillment of the Requirements For the Degree of Doctor of Philosophy (Software Engineering) at Concordia University Montréal, Québec, Canada August 2017 c Davood Mazinanian, 2017 Concordia University School of Graduate Studies This is to certify that the thesis prepared By: Mr. Davood Mazinanian Entitled: Eliminating Code Duplication in Cascading Style Sheets and submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy (Software Engineering) complies with the regulations of this University and meets the accepted standards with respect to originality and quality. Signed by the final examining commitee: Chair Dr Jia Yuan Yu External Examiner Dr Foutse Khomh Examiner Dr Juergen Rilling Examiner Dr Wahab Hamou-Lhadj Examiner Dr Peter Rigby Supervisor Dr Nikolaos Tsantalis Approved by Dr Volker Haarslev, Graduate Program Director 30 August 2017 Dr Amir Asif, Dean Faculty of Engineering and Computer Science Abstract Eliminating Code Duplication in Cascading Style Sheets Davood Mazinanian, Ph.D. Concordia University, 2017 Cascading Style Sheets (i.e., CSS) is the standard styling language, widely used for defining the presentation semantics of user interfaces for web, mobile and desktop applications. Despite its popularity, CSS has not received much attention from academia. Indeed, developing and maintaining CSS code is rather challenging, due to the inherent language design shortcomings, the interplay of CSS with other programming languages (e.g., HTML and JavaScript), the lack of empirically- evaluated coding best-practices, and immature tool support. As a result, the quality of CSS code bases is poor in many cases.
    [Show full text]
  • Rich Hong Ȑ (412) 436-4788 | a [email protected] | S Richhong.Com | H Hongrich | D Hongrich
    Rich Hong Ȑ (412) 436-4788 | a [email protected] | S richhong.com | H hongrich | D hongrich Summary Highly experienced software engineer with 10 years of industry experience building products for consumers, enterprises, and developers. Interested in working with a diverse team that communicates clearly and intentionally. Motivated to improving team productivity through process improvements and automation. Thrive on diving deep into complex problems involving distributed services and system architectures. Experience Confide New York, NY Co‐founder & Chief Technology Officer January 2014 — December 2020 • Acquired by IAC in December 2020 • Developed multiple ideas from the ground up into successful products for consumers, enterprises, and developers • These revenue generating products combined to support a profitable business ($1 million ARR) • Established the overall technical vision and led all aspects of technology development • Oversaw all technology services and software architecture and managed technology‐related budgets • Confide (20k+ paid subscribers; 200+ countries) getconfide.com – Confidential messenger with encrypted, ephemeral, and screenshot‐proof messages – Developed native mobile applications for iOS in Objective‐C and Android inJava – Developed cross‐platform desktop app for macOS and Windows with Electron, React, and CoffeeScript – Propelled company into profitability with Confide Plus, consumer in‐app purchase subscriptions for premium features – Launched an enterprise edition as Confide Pro including a web management
    [Show full text]
  • A Javascript Library for Numerical Computations
    McNumJS: A JavaScript Library for Numerical Computations Sujay Kathrotia School of Computer Science McGill University Montréal, Canada April 2015 A thesis submitted to the Faculty of Graduate Studies in partial fulfillment of the requirements for the degree of Master of Science. © 2015 Sujay Kathrotia i Dedication Dedicated to my supportive parents and kindhearted sisters, for their unconditional and unceasing love, belief and support. Also, to the entire research community, who with their hard work, make this world a better place! ii Abstract There has been a huge development in the web community recently, with an increasing focus on the performance of JavaScript. The development of state-of-the-art JavaScript engines and JavaScript technologies has improved the performance of JavaScript con- siderably and made it competitive with other dynamic languages. The major advantage of JavaScript applications is that they can run on any device that supports web browsers and distribution of these applications is very easy. This thesis reports on McNumJS, an easy-to-use and high-performance JavaScript library for numerical computations. This library is helpful to JavaScript developers for developing numerical applications and compiler writers who want to compile scientific languages like MATLAB or R to JavaScript. There has been a surge of technologies like typed arrays, web workers and asm.js, developed to improve the performance of JavaScript. We analyze these technologies and report their suitability for numerical applications. We have also compiled a detailed study on asm.js and performed different experiments to find the parts of asm.js that we can use in regular development of JavaScript applications.
    [Show full text]