Performance Monitoring of Ruby Applications

Total Page:16

File Type:pdf, Size:1020Kb

Performance Monitoring of Ruby Applications JOHANNES KEPLER UNIVERSITAT¨ LINZ JKU Faculty of Engineering and Natural Sciences Performance Monitoring of Ruby Applications Master’s Thesis submitted in partial fulfillment of the requirements for the academic degree Diplom-Ingenieur in the Master’s Program Computer Science Submitted by: Martin Ennemoser At the: Institut f¨urSystemsoftware Advisor: o.Univ.-Prof. Dipl.-Ing. Dr.Dr.h.c. Hanspeter M¨ossenb¨ock Linz, May 2015 Abstract Ruby is a modern scripting language which has gained great popularity, espe- cially among web developers, in the last couple of years. Monitoring the performance of Ruby web applications is vital because website administrators need to know how well their websites are performing, especi- ally when they are under high load. Existing Ruby performance monitoring tools are either slow, not flexible enough or don’t gather enough information about the application under diagnosis in order to find potential bottlenecks. This thesis presents a novel approach which is able to collect performance- related information from Ruby applications at run time. The presented ap- proach allows the instrumentation of arbitrary Ruby methods without the need of application code changes. This approach is based on metaprogram- ming methods which are provided by Ruby. The implemented prototype, which was developed during this thesis, is in- tegrated into dynaTrace, an application performance management (APM) solution for distributed applications. The evaluation of this prototype shows that the presented approach is a feasible way to gather performance informa- tion about Ruby applications. For that matter, this approach not just works for Ruby web applications but for arbitrary Ruby applications. i Kurzfassung Ruby ist eine moderne Skriptsprache, welche große Popularität, besonders unter Webentwicklern in den letzten Jahren erreicht hat. Das Überwachen der Performance von Ruby Webapplikationen ist für Website-Administratoren unerlässlich, vor allem wenn diese Applikationen unter hoher Last stehen. Existierende Diagnose-Tools erzeugen entweder einen zu hohen Overhead, sind nicht flexibel genug oder sammeln nicht genug Informationen über die überwachten Ruby Applikationen, um bestehende Performance-Engpässe zu entdecken. Diese Masterarbeit präsentiert einen neuartigen Ansatz, welcher in der Lage ist, Performance-Daten von Ruby Applikationen zur Laufzeit zu sammeln. Der präsentierte Ansatz erlaubt die Instrumentierung von beliebigen Ruby Methoden, ohne dass der Applikations-Code geändert werden muss. Dieser Ansatz basiert auf Metaprogrammierungs-Methoden, welche Ruby zur Ver- fügung stellt. Der implementierte Prototyp, welcher während dieser Arbeit entwickelt wur- de, ist in dynaTrace, eine Application Performance Management (APM) Lö- sung für verteilte Anwendungen integriert. Die Evaluierung dieses Prototypen zeigt, dass der präsentierte Ansatz ein brauchbarer Weg ist, um Performance- Daten von Ruby Applikationen zu sammeln. Dabei ist dieser nicht nur für Ruby Webapplikationen, sondern für beliebige Ruby Applikationen einsetz- bar. ii Contents Contents iii 1 Introduction 1 1.1 Motivation . .1 1.2 Objective . .2 1.3 Requirements . .3 2 dynaTrace Diagnostics 5 3 The Ruby Environment 7 3.1 The Ruby Programming Language . .7 3.2 Ruby Gems . .7 3.3 Interpreters . .9 3.3.1 MRI . .9 3.3.2 Rubinius . .9 3.3.3 JRuby . 10 3.4 Ruby on Rails . 10 4 Application Inspection 13 4.1 Overview . 13 4.2 Entry List . 14 4.3 Static Inspection . 16 4.4 Dynamic Inspection . 17 iii CONTENTS iv 5 Dynamic Inspection Approaches 20 5.1 Overview . 20 5.2 set_trace_func . 21 5.2.1 Dynamic Inspection Approach . 22 5.2.2 Advantages . 24 5.2.3 Disadvantages . 25 5.3 Active Support Notification . 25 5.3.1 Dynamic Inspection Approach . 26 5.3.2 Advantages . 27 5.3.3 Disadvantages . 27 5.4 method_added/singleton_method_added . 27 5.4.1 Dynamic Inspection Approach . 28 5.4.2 Advantages . 29 5.4.3 Disadvantages . 30 5.5 The require Method . 30 5.5.1 Dynamic Inspection Approach . 31 5.5.2 Advantages . 32 5.5.3 Disadvantages . 32 5.6 Chosen Dynamic Inspection Approach . 32 6 Instrumentation 34 6.1 Overview . 34 6.2 Static/Dynamic Instrumentation . 36 6.3 Ruby Code Injection . 37 6.4 Method Aliasing . 38 6.5 Defining New Methods . 38 6.6 Placement of the Instrumentation Code . 41 7 Native Agent Integration Approaches 43 7.1 MRI Extensions . 43 7.1.1 Advantages . 45 7.1.2 Disadvantages . 46 CONTENTS v 7.2 Ruby FFI . 46 7.2.1 Advantages . 47 7.2.2 Disadvantages . 47 7.3 JRuby Extensions . 47 7.3.1 Advantages . 50 7.3.2 Disadvantages . 51 7.4 Conclusion . 51 8 Architecture and Implementation 52 8.1 Agent Architecture . 52 8.2 Component Overview . 52 8.3 Instrumentation Engine . 54 8.3.1 Static Inspection Algorithm . 54 8.3.2 Dynamic Inspection Algorithm . 57 8.4 Agent Extension Interface . 59 8.5 Native Interface . 60 8.6 Agent Injection . 61 8.6.1 Agent Injection with Gemfile . 61 8.6.2 Agent Injection without Gemfile . 62 9 Sensors 63 9.1 Method Sensor . 63 9.1.1 Implementation . 64 9.1.2 Functionality . 64 9.2 Middleware Sensor . 65 9.2.1 Rack . 66 9.2.2 Implementation . 67 9.3 Other Sensors . 69 9.3.1 HTTP Sensor . 69 9.3.2 Active Record Sensor . 70 9.3.3 Rails ActionView/ActionController Sensors . 70 CONTENTS vi 10 Related Work 73 10.1 ruby-prof . 73 10.1.1 Advantages . 74 10.1.2 Disadvantages . 75 10.2 Bullet . 75 10.2.1 Advantages . 75 10.2.2 Disadvantages . 76 10.3 Railsbench . 76 10.3.1 Advantages . 77 10.3.2 Disadvantages . 77 10.4 New Relic APM . 77 10.4.1 Advantages . 79 10.4.2 Disadvantages . 79 11 Case Study 80 11.1 Shoppe . 80 11.2 Agent Deployment . 80 11.3 PurePath Samples . 82 11.4 Method Instrumentation Overhead . 82 11.4.1 Run Time Overhead . 83 11.4.2 Memory Overhead . 83 11.5 Performance Evaluation of Shoppe . 83 11.5.1 Load Time . 83 11.5.2 Average HTTP Request Time . 84 11.5.3 CPU Consumption . 84 11.5.4 Memory Consumption . 84 12 Future Work 91 13 Conclusion 92 List of Figures 95 Listing 97 Chapter 1 Introduction This chapter points out the relevance of this thesis and describes the objec- tives and requirements that had to be fulfilled. 1.1 Motivation Nowadays, many websites are built using scripting languages along with web application frameworks in order to simplify the development of dynamic web- sites, web applications or web services. Many different scripting languages and frameworks exist which have strengths and weaknesses and are used for specific kinds of tasks. One famous scripting language is Ruby, which is actually a general programming language but is mostly used for the develop- ment of web applications. Ruby has become popular with the emergence of Ruby on Rails [1] (Rails), which is a web application framework written in Ruby. Rails has gained great popularity among web developers during the last years. According to builtWith [2], Ruby on Rails is listed as one of the most popular frameworks currently. Website owners are interested in how well their Ruby-based websites per- form and whether there are any performance bottlenecks. There are already tools available for monitoring and analyzing the performance of Ruby web applications. But these tools are either slow, framework specific or just give superficial performance or error information. 1 CHAPTER 1. INTRODUCTION 2 1.2 Objective The objective of this thesis was the development of a tool (a so called Agent)1 which is able to collect performance-related information from Ruby applica- tions. This tool has to perform the following tasks: • Interception of HTTP requests which are made to the application. • Instrumentation of the application under diagnosis in order to collect performance-related information like response times, execution times or throughput. Furthermore, it should also be possible to collect method- related information like parameters or return values. • Sending the collected data to a central server for evaluation and to track execution. This tool should not only be usable for web applications but for general Ruby applications. However, it has to be noted that Ruby is mainly used in the field of web development. To achieve the objectives mentioned above the following steps had to be taken: 1. Research of the most important Ruby interpreters: Which interpreters are currently used? Which of them are relevant for this thesis? 2. Research of the most important Ruby web application frameworks: Which web application frameworks are important beside Ruby on Rails? 3. Research of Ruby performance tools: Which performance tools are al- ready available? How do they work? How can they be used in terms of this thesis? 4. Research of injection: Which possibilities exist in order to inject the agent into the application at run time? 5. Implementation of the Agent: To implement a prototype, the following questions have to answered first: (a) Is it necessary to access the internals of the interpreter in order to obtain performance metrics? If yes, how could this be done? 1The terms dynaTrace Ruby Agent, Ruby Agent and Agent will be used synonymously. CHAPTER 1. INTRODUCTION 3 (b) Is it possible to get performance metrics directly from the frame- works? (c) How could the dynaTrace Native Agent be integrated into the Ruby process? 6. Implementation of the Sensors: How could custom code be injected into the application? How could the injection overhead be kept small? How could performance information be collected and how are they transmit- ted to the agent? 7. Evaluation of the prototype: Test the Agent on a real world application to assess its performance. 1.3 Requirements The Agent has to fulfill the following requirements: • Run inconspicuously: The Agent runs in the background of the Ruby process. However, it must not alter the program behavior or even worse, crash the program.
Recommended publications
  • Modern Web Application Frameworks
    MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Û¡¢£¤¥¦§¨ª«¬­Æ°±²³´µ·¸¹º»¼½¾¿Ý Modern Web Application Frameworks MASTER’S THESIS Bc. Jan Pater Brno, autumn 2015 Declaration Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or ex- cerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Bc. Jan Pater Advisor: doc. RNDr. Petr Sojka, Ph.D. i Abstract The aim of this paper was the analysis of major web application frameworks and the design and implementation of applications for website content ma- nagement of Laboratory of Multimedia Electronic Applications and Film festival organized by Faculty of Informatics. The paper introduces readers into web application development problematic and focuses on characte- ristics and specifics of ten selected modern web application frameworks, which were described and compared on the basis of relevant criteria. Practi- cal part of the paper includes the selection of a suitable framework for im- plementation of both applications and describes their design, development process and deployment within the laboratory. ii Keywords Web application, Framework, PHP,Java, Ruby, Python, Laravel, Nette, Phal- con, Rails, Padrino, Django, Flask, Grails, Vaadin, Play, LEMMA, Film fes- tival iii Acknowledgement I would like to show my gratitude to my supervisor doc. RNDr. Petr So- jka, Ph.D. for his advice and comments on this thesis as well as to RNDr. Lukáš Hejtmánek, Ph.D. for his assistance with application deployment and server setup. Many thanks also go to OndˇrejTom for his valuable help and advice during application development.
    [Show full text]
  • Michigan Strategic Fund
    MICHIGAN STRATEGIC FUND MEMORANDUM DATE: March 12, 2021 TO: The Honorable Gretchen Whitmer, Governor of Michigan Members of the Michigan Legislature FROM: Mark Burton, President, Michigan Strategic Fund SUBJECT: FY 2020 MSF/MEDC Annual Report The Michigan Strategic Fund (MSF) is required to submit an annual report to the Governor and the Michigan Legislature summarizing activities and program spending for the previous fiscal year. This requirement is contained within the Michigan Strategic Fund Act (Public Act 270 of 1984) and budget boilerplate. Attached you will find the annual report for the MSF and the Michigan Economic Development Corporation (MEDC) as required in by Section 1004 of Public Act 166 of 2020 as well as the consolidated MSF Act reporting requirements found in Section 125.2009 of the MSF Act. Additionally, you will find an executive summary at the forefront of the report that provides a year-in-review snapshot of activities, including COVID-19 relief programs to support Michigan businesses and communities. To further consolidate legislative reporting, the attachment includes the following budget boilerplate reports: • Michigan Business Development Program and Michigan Community Revitalization Program amendments (Section 1006) • Corporate budget, revenue, expenditures/activities and state vs. corporate FTEs (Section 1007) • Jobs for Michigan Investment Fund (Section 1010) • Michigan Film incentives status (Section 1032) • Michigan Film & Digital Media Office activities ( Section 1033) • Business incubators and accelerators annual report (Section 1034) The following programs are not included in the FY 2020 report: • The Community College Skilled Trades Equipment Program was created in 2015 to provide funding to community colleges to purchase equipment required for educational programs in high-wage, high-skill, and high-demand occupations.
    [Show full text]
  • Interfacing Apache HTTP Server 2.4 with External Applications
    Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick November 6, 2012 Who am I? Interfacing Apache HTTP Server 2.4 with External Applications Met Unix (in the form of Xenix) in 1985 Jeff Trawick Joined IBM in 1990 to work on network software for mainframes Moved to a different organization in 2000 to work on Apache httpd Later spent about 4 years at Sun/Oracle Got tired of being tired of being an employee of too-huge corporation so formed my own too-small company Currently working part-time, coding on other projects, and taking classes Overview Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Huge problem space, so simplify Perspective: \General purpose" web servers, not minimal application containers which implement HTTP \Applications:" Code that runs dynamically on the server during request processing to process input and generate output Possible web server interactions Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Native code plugin modules (uhh, assuming server is native code) Non-native code + language interpreter inside server (Lua, Perl, etc.) Arbitrary processes on the other side of a standard wire protocol like HTTP (proxy), CGI, FastCGI, etc. (Java and \all of the above") or private protocol Some hybrid such as mod fcgid mod fcgid as example hybrid Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Supports applications which implement a standard wire protocol, no restriction on implementation mechanism Has extensive support for managing the application[+interpreter] processes so that the management of the application processes is well-integrated with the web server Contrast with mod proxy fcgi (pure FastCGI, no process management) or mod php (no processes/threads other than those of web server).
    [Show full text]
  • Integrating Openshift Enterprise with Identity Management (Idm) in Red Hat Enterprise Linux
    Integrating OpenShift Enterprise with Identity Management (IdM) in Red Hat Enterprise Linux OpenShift Enterprise 2.2 IdM in Red Hat Enterprise Linux 7 Windows Server 2012 - Active Directory Integration Mark Heslin Principal Systems Engineer Version 1.1 January 2015 1801 Varsity Drive™ Raleigh NC 27606-2072 USA Phone: +1 919 754 3700 Phone: 888 733 4281 Fax: +1 919 754 3701 PO Box 13588 Research Triangle Park NC 27709 USA Linux is a registered trademark of Linus Torvalds. Red Hat, Red Hat Enterprise Linux and the Red Hat "Shadowman" logo are registered trademarks of Red Hat, Inc. in the United States and other countries. Microsoft and Windows are U.S. registered trademarks of Microsoft Corporation. UNIX is a registered trademark of The Open Group. Intel, the Intel logo and Xeon are registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. All other trademarks referenced herein are the property of their respective owners. © 2014 by Red Hat, Inc. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, V1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). The information contained herein is subject to change without notice. Red Hat, Inc. shall not be liable for technical or editorial errors or omissions contained herein. Distribution of modified versions of this document is prohibited without the explicit permission of Red Hat Inc. Distribution of this work or derivative of this work in any standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from Red Hat Inc.
    [Show full text]
  • Rubyperf.Pdf
    Ruby Performance. Tips, Tricks & Hacks Who am I? • Ezra Zygmuntowicz (zig-mun-tuv-itch) • Rubyist for 4 years • Engine Yard Founder and Architect • Blog: http://brainspl.at Ruby is Slow Ruby is Slow?!? Well, yes and no. The Ruby Performance Dichotomy Framework Code VS Application Code Benchmarking: The only way to really know performance characteristics Profiling: Measure don’t guess. ruby-prof What is all this good for in real life? Merb Merb Like most useful code it started as a hack, Merb == Mongrel + Erb • No cgi.rb !! • Clean room implementation of ActionPack • Thread Safe with configurable Mutex Locks • Rails compatible REST routing • No Magic( well less anyway ;) • Did I mention no cgi.rb? • Fast! On average 2-4 times faster than rails Design Goals • Small core framework for the VC in MVC • ORM agnostic, use ActiveRecord, Sequel, DataMapper or roll your own db access. • Prefer simple code over magic code • Keep the stack traces short( I’m looking at you alias_method_chain) • Thread safe, reentrant code Merb Hello World No code is faster then no code • Simplicity and clarity trumps magic every time. • When in doubt leave it out. • Core framework to stay small and simple and easy to extend without gross hacks • Prefer plugins for non core functionality • Plugins can be gems Key Differences • No auto-render. The return value of your controller actions is what gets returned to client • Merb’s render method just returns a string, allowing for multiple renders and more flexibility • PartController’s allow for encapsualted applets without big performance cost Why not work on Rails instead of making a new framework? • Originally I was trying to optimize Rails and make it more thread safe.
    [Show full text]
  • Instant Messaging Video Converter, Iphone Converter Application
    Web Browsing Mozilla Firefox The premier free, open-source browser. Tabs, pop-up blocking, themes, and extensions. Considered by many to be the world's best browser. Download Page Video Player, Torrents, Podcasting Miro Beautiful interface. Plays any video type (much more than quicktime). Subscribe to video RSS, download, and watch all in one. Torrent support. Search and download from YouTube and others. Download Page IM - Instant Messaging Adium Connect to multiple IM accounts simultaneously in a single app, including: AOL IM, MSN, and Jabber. Beautiful, themable interface. Download Page Video Converter, iPhone Converter Miro Video Converter Convert any type of video to mp4 or theora. Convert any video for use with iPhone, iPod, Android, etc. Very clean, easy to use interface. Download Page Application Launching Quicksilver Quicksilver lets you start applications (and do just about everything) with a few quick taps of your fingers. Warning: start using Quicksilver and you won't be able to imagine using a Mac without it. Download Page Email Mozilla Thunderbird Powerful spam filtering, solid interface, and all the features you need. Download Page Utilities The Unarchiver Uncompress RAR, 7zip, tar, and bz2 files on your Mac. Many new Mac users will be puzzled the first time they download a RAR file. Do them a favor and download UnRarX for them! Download Page DVD Ripping Handbrake DVD ripper and MPEG-4 / H.264 encoding. Very simple to use. Download Page RSS Vienna Very nice, native RSS client. Download Page RSSOwl Solid cross-platform RSS client. Download Page Peer-to-Peer Filesharing Cabos A simple, easy to use filesharing program.
    [Show full text]
  • Carbon Copy Cloner Documentation: English
    Carbon Copy Cloner Documentation: English Getting started with CCC System Requirements, Installing, Updating, and Uninstalling CCC CCC License, Registration, and Trial FAQs Trouble Applying Your Registration Information? Establishing an initial backup Preparing your backup disk for a backup of Mac OS X Restoring data from your backup What's new in CCC Features of CCC specific to Lion and greater Release History Carbon Copy Cloner's Transition to a Commercial Product: Frequently Asked Questions Credits Example backup scenarios I want to clone my entire hard drive to a new hard drive or a new machine I want to backup my important data to another Macintosh on my network I want to backup multiple machines or hard drives to the same hard drive I want my backup task to run automatically on a scheduled basis Backing up to/from network volumes and other non-HFS volumes I want to back up my whole Mac to a Time Capsule or other network volume I want to defragment my hard drive Backup and archiving settings Excluding files and folders from a backup task Protecting data that is already on your destination volume Managing previous versions of your files Automated maintenance of CCC archives Advanced Settings Some files and folders are automatically excluded from a backup task The Block-Level Copy Scheduling Backup Tasks Scheduling a task and basic settings Performing actions Before and After the backup task Deferring and skipping scheduled tasks Frequently asked questions about scheduled tasks Email and Growl notifications Backing Up to Disk Images
    [Show full text]
  • Insert Here Your Thesis' Task
    Insert here your thesis' task. Czech Technical University in Prague Faculty of Information Technology Department of Software Engineering Master's thesis New Ruby parser and AST for SmallRuby Bc. Jiˇr´ıFajman Supervisor: Ing. Marcel Hlopko 18th February 2016 Acknowledgements I would like to thank to my supervisor Ing. Marcel Hlopko for perfect coop- eration and valuable advices. I would also like to thank to my family for support. Declaration I hereby declare that the presented thesis is my own work and that I have cited all sources of information in accordance with the Guideline for adhering to ethical principles when elaborating an academic final thesis. I acknowledge that my thesis is subject to the rights and obligations stip- ulated by the Act No. 121/2000 Coll., the Copyright Act, as amended. In accordance with Article 46(6) of the Act, I hereby grant a nonexclusive au- thorization (license) to utilize this thesis, including any and all computer pro- grams incorporated therein or attached thereto and all corresponding docu- mentation (hereinafter collectively referred to as the \Work"), to any and all persons that wish to utilize the Work. Such persons are entitled to use the Work in any way (including for-profit purposes) that does not detract from its value. This authorization is not limited in terms of time, location and quan- tity. However, all persons that makes use of the above license shall be obliged to grant a license at least in the same scope as defined above with respect to each and every work that is created (wholly or in part) based on the Work, by modifying the Work, by combining the Work with another work, by including the Work in a collection of works or by adapting the Work (including trans- lation), and at the same time make available the source code of such work at least in a way and scope that are comparable to the way and scope in which the source code of the Work is made available.
    [Show full text]
  • Insight: Semantic Provenance and Analysis Platform for Multi-Center Neurology Healthcare Research
    INSIGHT: SEMANTIC PROVENANCE AND ANALYSIS PLATFORM FOR MULTI-CENTER NEUROLOGY HEALTHCARE RESEARCH by PRIYA RAMESH Submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Department of Electrical Engineering and Computer Science CASE WESTERN RESERVE UNIVERSITY January, 2016 ii CASE WESTERN RESERVE UNIVERSITY SCHOOL OF GRADUATE STUDIES We hereby approve the thesis of PRIYA RAMESH candidate for the Master of Science degree*. (signed) Dr. Satya S. Sahoo, Ph.D. (Chair of the committee) Dr. Kenneth A. Loparo, Ph.D. Dr. Martha Sajatovic, MD. (date) November 5th, 2015 *We also certify that written approval has been obtained for any proprietary material contained therein. iii Copyright © Priya Ramesh January, 2016 All rights reserved. iv TABLE OF CONTENTS TABLE OF CONTENTS iv LIST OF FIGURES vi LIST OF TABLES vii ACKNOWLEDGEMENT viii CHAPTER 1. INTRODUCTION 10 CHAPTER 2. BACKGROUND 13 2.1 Managing Epilepsy Well Network 13 2.1.1 Introduction 13 2.1.2 MEW database workgroup 16 2.1.3 MEW Network survey results 17 2.1.4 A common terminology for epilepsy self-management 19 2.1.5 Standardization of data elements 20 2.1.6 Data curation workflow for MEW Network datasets 21 2.1.7 MEW Network database design and functionality 26 2.2 Research Studies 27 CHAPTER 3. METHODS 30 3.1. Semantic Integration Module using MEW Common Data Elements (CDEs) 33 3.2. Data Exploration and Query Module 34 3.3. Ontology-based Inference Module 36 CHAPTER 4. INSIGHT SOFTWARE DEVELOPMENT 38 4.1 Objective 38 4.2 Agile Methodology 39 4.3 User Interface Development 41 CHAPTER 5.
    [Show full text]
  • Vasili Korol
    Vasili Korol Senior Software Developer Odense, Denmark Age: 35 mob.: +45 20 68 50 23 Married, have son (born 2010) e-mail: [email protected] ​ Personal Statement ⚬ Strong IT skills (16+ years of versatile experience) ⚬ Background in physics research ⚬ Work effectively both as team member and leader ⚬ Enthusiastic and committed ⚬ Spoken languages: Russian (native), English (fluent), Danish (Prøve i Dansk 3 / level B2) ​ ​ ​ ​ Education 2006–2008: Master’s degree (with distinction) in applied physics. ​ 2002–2006: Bachelor’s degree (with distinction) in applied physics. Under- to postgraduate student at St. Petersburg State Polytechnical University, Faculty of Physics and Technology, Dept. of Cosmic Physics. The thesis “Search for possible space-time variations of the fine-structure constant and isotopic shifts” (a supervisor Prof. ​ M.G. Kozlov). ​ 1992-2002: School education in St. Petersburg, Russia and Belfast, UK (in 1993). Professional Career 2015 – Feb 2021: Software developer in the QuantBio research group at the University of ​ ​ ​ ​ Southern Denmark (SDU), Institute of Physics, Chemistry and Pharmacy (HPC section). I am the principal developer of VIKING, a service providing a web interface for configuring ​ ​ ​ and running scientific computational tasks on supercomputers. I designed the software architecture, developed the system core and coordinated the work of several developers. 2014 – 2015: Lead programmer (Perl) at Internet Projects LLC, russian informational portals subscribe.ru and sendsay.ru (St. Petersburg, Russia). ​ ​ ​ Worked with a team of developers on projects targeted at developing an API for news aggregation and content processing services. This involved integration with various online platforms (Facebook, Twitter, Vkontakte, LiveJournal, Google Analytics), web scraping and designing instruments for user publications at the portals and beyond.
    [Show full text]
  • Neil C. Northrop | (503)-327-1970 [email protected] |
    Neil C. Northrop http://github.com/neilnorthrop | (503)-327-1970 [email protected] | https://neilnorthrop.github.io Technical Tools Ruby Sentry-Raven VCR Rails/Sinatra/Padrino Whenever Git/Github/Gitlab JSON/XML Rspec/MiniTest Bash scripting Mechanize/Nokogiri Mocha Bootstrap/HTML/CSS Postgresql FactoryGirl RabbitMQ Sequel Capybara JIRA/Confluence Ruby AWS-SDK (S3 and Rubocop Vagrant SQS) VirtualBox Fidelity Life Association Software Engineer 11/2015 – Present • Worked on development of internal systems to pull data from legacy systems and feed internal XML files to downstream sources allowing Agents to be updated in real-time on their Policies. • Developed an internal event driven system that created Policy events from incoming XML, enabling real-time policy updates to business users. • Used Padrino to build out multiple internal web applications for business end- users. • Took over development of a Sinatra web app calling a 3rd party API. Support Engineer/ Developer Apprenticeship 11/2013 - 11/2015 • Supporting multiple application products as Level 2 Support. • Using in house tools to help cases move start to end. • Using JIRA/Confluence tools. • Worked with Rails 1.2.1 and 2.3.2 applications. • Furthered experience with VI and VIM while working on remote servers. • Joined the Software Apprenticeship program to become a Software Engineer. Professional Experience 28dayhug.com E-Commerce Website https://rails-28dayhug.herokuapp.com • Migrating an existing site from Wordpress to a Rails environment. • Implementing the payment processor using Stripe API. ENSearch Music Search Engine https://ensearch.herokuapp.com • Personal project to help better understand Rails and 3rd Party APIs. DotaMeter.com Site for Game Statistics https://dotameter.herokuapp.com • Built from the ground up using Rails, Angular, and Mongo DB.
    [Show full text]
  • Merb's Role in the MVC Holy Wars
    BattleBattle RoyaleRoyale Merb's Role in the MVC Holy Wars >> whoamiwhoami >> whoamiwhoami ● Foy Savas >> whoamiwhoami ● Foy Savas ● foysavas online (github, irc, twitter, etc) >> whoamiwhoami ● Foy Savas ● foysavas online (github, irc, twitter, etc) ● Ruby Application Developer >> whoamiwhoami ● Foy Savas ● foysavas online (github, irc, twitter, etc) ● Ruby Application Developer ● Merb and DataMapper Contributor >> whoamiwhoami ● Foy Savas ● foysavas online (github, irc, twitter, etc) ● Ruby Application Developer ● Merb and DataMapper Contributor ● Bet Dan Grigsby $20 we could patch Extlib against some ridiculous edge case bug Dan,Dan, youyou betterbetter paypay up.up. TheThe MerbMerb WayWay AA wayway thatthat cancan bebe takentaken rarelyrarely staysstays thethe way.way. AA namename thatthat cancan bebe givengiven rarelyrarely staysstays thethe name.name. AppliesApplies toto WebWeb FrameworksFrameworks AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP ● ASP AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP ● ASP ● Coldfusion AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP ● ASP ● Coldfusion ● Bird's Nests of PHP AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP ● ASP ● Coldfusion ● Bird's Nests of PHP ● Ruby on Rails AppliesApplies toto WebWeb FrameworksFrameworks ● OpenACS ● JSP ● ASP ● Coldfusion ● Bird's Nests of PHP ● Ruby on Rails ● Django AppliesApplies
    [Show full text]