About Me
Shockingly, Rye Bread is actually a human being named Ryan Smith. He is currently a software developer of mobile applications on Android. A sample of his projects is is at the bottom of this page here. He's an ENFJ-A - it says so here, in case you're interested in that kind of thing. He's happy to take your anonymous feedback here, as well as non-anonymous messages of any kind via the Conact page.
Contact Rye Bread for:
- A critical mind to help in designing, planning, and developing (worthwhile & relevant) code projects
- A helpful hand to assist with building IKEA furniture
- A friend of animals for a pet that needs babysitting
- A creative touch to choreograph a touchdown celebration
- A voice to amplify a worthy message
Rye's professional energy is spent on projects that:
- Offer interesting challenges and opportunities for growth & mastery
- Are shared with a supportive team of diverse, yet like-minded people
- Align with his values
He has worked at Epic, a healthcare software company, in various roles for most of his career, where he has & continues to:
- Create, enhance, fix, and maintain applications
- Diagnose and solve technical issues
- Manage relationships with clients
- Manage a team of technical service representatives as direct reports
- Manage projects
- Train internal and client staff on technical topics
- Do many other things according to needs and his interest & availability
Rye's values include:
- He disagrees with factory farming practices, believes meat should be a "sometimes food", and prefers sustainably & ethically produced food products
- He believes in human rights, respect, equal opportunities, and equal pay for people of all nationalities, races, ethnicities, sexual orientations, gender identities
- He is in favor of sustainable energy, environmental preservation, and environmentally-friendly policies
- He supports democracy and free speech, especially in authoritarian settings where vulnerable voices are suppressed
- He disagrees with bans on specific dog breeds
Some of Rye's likes and interests include:
- He enjoys playing outside & is most fond of: ultimate frisbee, volleyball, kickball, and hiking
- He also enjoys playing inside, particularly: pool, go, ping pong, board games, tabletop games, video games, and card games of all kinds
- He is a big fan of house & hip hop music and festivals - some of his favorite artists are: TheFatRat, Dillon Francis, Above & Beyond
- He practices yoga, calisthenics, and enjoys dancing (poorly)
- He is an avid follower of sports - his favorite league to follow is the NFL where he supports the Pittsburgh Steelers
- He enjoys travel - see the map below for all the places he's been.
- Some of his favorite films are: Wall-E, 300, Legend of the Guardians: The Owls of Ga'Hoole
- Some of his favorite TV shows are: Spartacus, Brooklyn Nine-Nine, Game of Thrones
- Some of his favorite fiction books are: The Hitchhiker's Guide to the Galaxy, Stranger in a Strange Land, Dune
- Some of his favorite nonfiction books are: How to Develop a Super-Power Memory, How to Talk to Anyone, The Design of Everyday Things
Some more Rye facts:
- He has a cat named Sophia (aka "Sophie")
- He spent a year volunteering to help first generation & minority public school students prepare for and gain access to colleges and universities
- His favorite food is sushi. His least favorite food is cheese.
- He used to run a lot (cross-country and track in high school and college) and has completed a marathon
- He got lost in the woods near Yosemite (spoiler alert - he survived)
- He's lived in in several places due to growing up in a state department family - specifically & in order: Virginia, Japan, Turkey, Jordan, Virginia (again), Japan (again), China (briefly), Minnesota, Illinois, Wisconsin, the UK, and Wisconsin (again).
- Due to a judo injury in high school he is able to hyperextend his left arm
- He has varying degrees of linguistic proficiency (sorted in decreasing order) in English, Japanese, Chinese, and Arabic
- He's half Lebanese on his mother's side - most of his family is divided between the eastern US and Lebanon
- He graduated from Carleton College in 2009 with a double major in Mathematics and Philosophy, a minor in Chinese language, and another minor in Cognitive Science
- He ran cross country and track in high school and college
Projects
Career
- Rewrote and expanded code to check the integrity of data structures for EpicCare Inpatient data in customer Cache environments.
- Context: this code is run any time a server environment hosting the application experiences an unplanned downtime. Potential problems with the integrity of data structures necessary for the Inpatient application to function correctly are classified as errors in a report.
- Previously: The integrity checks previously did not detect several possible problems, and returned several false positives. The integrity check utility previously did not display any information regarding what to do in order to address the errors being returned.
- After my updates, known error types are correctly captured and displayed, along with actionable steps to address each. Several usability and coding style enhancements were added.
- Context:
- extensions (fka programming points) are records which configure the appearance and behavior characteristics of an instance of the application.
- They are used in to a wide variety of configuration contexts, plugging in to different kinds of records and acting as parameterized entry points into different locations in code.
- Created an infrastructure for creating and running reports over extension records.
- Written in Caché, The reporting tool searches for extensions based on configurable criteria and displays information about those extensions, including potential duplicates and all records in which each extension is being used.
- Context:
- Profiles records house thousands of settings that impact the appearance and behavior of several applications.
- Profiles can be applied at multiple levels of granularity, from the level of an individual user, to the level of the entire application instance.
- Logic is applied on each user's login to take settings from each level and cascase them into a single induced profile with settings from the various levels.
- Created an infrastructure for creating and reporting on profile record build, assignment, and induced settings.
- Written in Caché, the reporting tool created allowed users to search for and see profiles by several criteria, view data about their usage and application, and debug the source of settings in induced profiles.
- Led a team of ten to coordinate the creation of various parts of the project in advance of a deadline, as well as contributing his own development.
- The Cogito Tune Up is a Windows Forms app and accompanying Caché database script.
- The script pulls application configuration and usage data from a customer's environment
- The Windows Forms app loads the data into a central database and generates an Excel-based scorecard with dozens of statistics and utilization metrics.
- These scorecards are used to highlight areas for improvement, understand utilziation of functionality, and draw attention to unseen problems.
- Context:
- A registry in this context is a population of records and collection of features about each.
- The population consisted of readmissions, and the features were those selected to be of potential relevance for understanding and preventing readmissions.
- Coordinated design and development (and contributed both) to the creation of the registry.
- Logic for inclusion of patient readmissions and for the dozens of individual features was developed in Caché.
- A Windows Forms application written to query and aggregate data from several data sources and display metrics and status indicators on customer organizations in Europe for leadership to track and review.
- Was the lead developer for an internal Q&A forum similar to Stack Overflow (called "Betelgeuse") using C#, ASP.NET MVC.
- Migrated the app's data from an old Python-based OSQA platform to the new ASP.NET MVC platform.
- Implemented several fixes and improvements, including points-based security, "my questions / answers" pages, assignment & ownership capabilities, overhauling of the post ranking algorithm, and data model changes.
- Developed support for automatic notifications to be sent to patients when a clinician documents that they have begun transport towards a patient's home health appointment.
- Previously, patients had no way to be updated of a clinician's departure and estimated arrival time.
- This enhancement improved the patient experience by providing transparency related to their appointment's start time.
- Developed using in-house e-mail & SMS messenging and time logging APIs.
- Developed a workflow and accessible UI for capturing multiple clinical images and uploading them as a batch.
- Previously, users needed to save clinical media one at a time, each requiring a separate entry to the media capture activity.
- This enhancement improved the efficiency of clinicians, saving an average of over 12 taps per patient encounter.
- Developed using ViewModel, LiveData, WorkManager, AsyncTask, RecyclerView.
- Developed support for the ability to capture clinical images of wounds while offline.
- Context:
- Home health and hospice nurses users perform a large portion of their workflows in a disconnected state.
- They typically enter the application's offline mode as they start, going online & syncing their work upon return to the office at the end of the day.
- Previously, users were not able to capture images of wounds while offline. This required users to implement clunky workarounds, such as taking these images on their device's camera roll, emailing them to themselves when online, and then manually importing them after the fact.
- After this enhancement, users no longer needed to perform manual after-the-fact workarounds, significantly improving the user experience and saving several minutes of work per patient.
- Developed using an in-house offline cache & synchronization framework and serialization & encryption APIs.
Coursework
- Identifier Cross-Reference Analysis: A "warm-up" exercise for CS 536. Locates each variable declaration and links the declared variable with all its uses. Outputs each variable, its type, and how many times it was used on each line.
- CSX Scanner: A Jlex scanner specification and associated induced CSX scanner.
- CSX Parser: A CUP parser specification and associated induced CSX parser.
- CSX Type Checker: Functions and classes that implement a type checker for CSX programs.
- CSX Code Generator: Traverses the abstract syntax tree for a CSX program and generates JVM assembler code, to be assembled using Jasmin.
- Implementation of ID3: An implementation of the ID3 decision tree learning algorithm.
- ID3 with "bagging": An implementation of the ID3 decision tree learning algorithm that uses an ensemble method (known as "bagging") with multiple decision trees.
-
Nannon players based on:
- Full joint probability tables (size 6 board only) - wins 64.47% of games against an opponent playing random moves
- Naïve Bayes Nets (supports board sizes 6, 8, 10, 12) - wins 69.98% of games against an opponent playing random moves
- Bayes Nets (supports board sizes 6, 8, 10, 12) - wins 73.62% of games against an opponent playing random moves
- Code
- Text sorting program: A text sorting program.
- xv6 system call: A new system call for xv6 called getprocs(), which returns the number of processes that exist at the time of the call.
- Command line interpreter: A command line interpreter (shell) supporting the "exit", "cd", "pwd", and "path" commands.
- Priority scheduler: A priority scheduler for xv6.
- Memory allocator: An implementation of a memory allocator (malloc() and free()) for user-level processes.
- Scalable web crawler: A multithreaded scalable web crawler.
- Kernel threads: An implementation of kernel threads in xv6 and system calls to create and merge them.
- File system checker: A file system checker which takes a file system image as input and presents a report analyzing its consistency.
- Small file optimization: A performance optimization for small files (less than or equal to 52 bytes) in xv6 where data is written directly to small files' inodes rather than to data blocks.
Hobby / Blog Posts / Other
- Sample app for a blog post outlining how one might use a Windows Forms app with OleDbConnection and ExcelInterop to read data from a data source and & then use the data to generate an Excel-based scorecard.
- Relies on a template Excel workbook with forumlas and formatting.
- On GitHub
- This blog! An ASP.NET MVC blog with NHibernate.
- Most of the code is not Rye's - it's from an excellent blog post by Pride Parrot here with some modifications & additions by Rye.
- Sample app for a blog post demonstrating how to import and store contacts from an Android device onto your own app using Room & LiveData.
- On GitHub
- Sample app for a blog post demonstrating how to create recurring notifications on a schedule input by users.
- On GitHub
- An android app - Owl helps you keep in touch with the people in your life.
- It does this by:
- Letting you create or import contacts.
- Store info about their contact details, prefered apps for communication, and desired contact frequency.
- Producing a notification at the desired frequency which (1) provides a menu of pre-packaged messages to choose from and (2) launches the preferred app of choice with the chosen message as a draft message to your contact.
- The list of pre-packaged messages can be extended by users with custom messages, and some additional administrative functions are avaiable.
- On GitHub