Hello, I'm
RickPhillips
Welcome
Welcome to my website! I'm a software engineer and full stack developer. This website is my digital home, and I'm excited to share with you my passion for technology and programming.
On this site, you'll find information about my experience, skills, and projects. I love learning about new technologies and experimenting with different programming languages, so you'll find a variety of topics here. Whether you're a fellow developer, a tech enthusiast, or just curious about what I do, I hope you'll find something here that interests you.
I'm committed to sharing my knowledge and experience with others, and I believe in the power of community. So, if you have any questions, comments, or just want to chat, please don't hesitate to reach out. I'd love to hear from you and connect with other like-minded individuals.
Thank you for visiting my website, and I hope you enjoy your stay.
Happy coding!
Education
I have a M.S.C.S. in Data Science and a B.S.C.S. in Software Development. I believe that learning never stops.
Experience
I have been a developer for over ten years and built professional applications in many environments.
Interests
My interests go beyond my love for technology and coding. I am a sports fan who loves gaming with my family.
About Me
I develop applications for any business need!
One of the key aspects of my work is understanding the business needs of my clients. This involves taking the time to understand their workflows, processes, and pain points. By doing so, I can design and develop applications that are tailored to their specific requirements. This approach ensures that the application is not only functional but also efficient and effective in addressing their business needs.
Contact me if you would like to learn more about what I can do for your organization.
Education
M.S.C.S. in Data Science
B.S.C.S. in Software Development
Direct Hire
Available
Freelance
Available
My Skills
Thank you for taking the time look around
I have had the opportunity to gain experience in myriad languages, frameworks, and disciplines. Here are some of my most notable skills.
Portfolio
I will be updating this section with the best of my projects, ideas, and examples. Check back often for updates.
BuyBoxes Single Page Application
The BuyBoxes SPA lets customers create their own custom design to be printed on demand on a variety of packaging products with zero tooling costs and no minimum order quantities. E-Commerce mailers, gift boxes, retail packaging, counter displays, donation bins and labels.
It was build from the ground up using Angular with TypeScript. It leverages Three.js for the 3D Model and Fabric.js for the flat. It began its life in Angular 6 and was ported to Angular 13 in 2022.
I was the lead developer on this project and oversaw the design and development in accordance with the vision of our talented team.
- Project Type: SPA
- Front End: Angular w/TS
- Back End: PHP, SQL Server
- Libraries: THREE.js, Fabric.js
- Integrations: ZenDesk, UPS, Google Apps, Analytics
Emuge-Franken U.S.A. Corporate Website
Drupal is a popular content management system (CMS) that is widely used for building dynamic and scalable websites. One of the easiest ways to develop a Drupal website locally is by using the Acquia Dev Desktop.
I developed and managed the corporate website for Emuge-Franken USA using Drupal and the AD Desktop for builds and releases.
I developed a number of custom Drupal modules to handle very specific business needs. This included developing a Tool Performance Reporting app for on the go performance testing. I also developed an iOS brochure app used at their trade shows.
- Project Type: Website Development
- CMS: Drupal
- Local Stack: Acquia Dev Desktop
- CLI: Drush
- Experience: Two years of custom module development
Best of Drupal Projects
Drupal is a free and open-source content management system (CMS) used for creating and managing websites. It is written in PHP and distributed under the GNU General Public License.
Drupal provides a framework for building websites that can be customized and extended with a wide range of modules and themes. It is known for its flexibility, scalability, and security, making it a popular choice for large organizations, government agencies, and educational institutions.
Drupal offers a variety of features, including user account registration and maintenance, RSS feeds, menu management, system administration, and page layout customization. It also provides an easy-to-use content creation and publishing system that allows users to create and manage different types of content such as blog posts, articles, and multimedia content.
Drupal’s modular architecture allows developers to add new functionality and features to the platform easily. This flexibility has helped Drupal become one of the most widely used content management systems in the world, powering millions of websites across a wide range of industries and sectors.
I worked as the Lead Web Developer for the Drupal 7 site at Emuge.com
I have setup sites here for all three supported versions:
- Project Type: CMS Websites
- CMS: Drupal
- Versions: 7, 9, 10
- Task: UI/UX, Frontend
Best of Angular Projects
Angular is a popular open-source web development framework used for building dynamic, robust, and scalable single-page applications (SPAs).
Developed and maintained by Google, Angular provides a wide range of features, including a powerful template engine, two-way data binding, component-based architecture, and dependency injection.
With its intuitive API, Angular simplifies the development process, making it easier for developers to create complex web applications in a relatively shorter period. It also offers extensive documentation and a vibrant community, which makes it an ideal choice for developers of all skill levels.
Overall, Angular has become a popular choice for building modern web applications that require dynamic and real-time updates.
Here I will be listing the best of my Angular projects. I will be adding them periodically so check back often to see the latest ideas I have been up to.
My largest and most successful project so far has been the Buyboxes Single Page App. I worked with Rand-Whitney for nearly five years to help make them a leader in digital packaging.
Upcoming Projects:
- Rick’s Recipes using a Firebase backend
- To Do list using PHP and MySQL
- OAuth authentication
- And more..
- Project Types: Angular
- Angular.io: The official website for Angular, maintained by the Angular team at Google. The website has comprehensive documentation, tutorials, and guides for developers who want to learn how to use Angular.
- Angular University: This comprehensive online learning platform is dedicated to teaching Angular development. This website offers a range of courses, tutorials, and resources for developers of all skill levels.
- Angular Material: A library of UI components for Angular applications, developed and maintained by the Angular team at Google. This library provides developers with a range of pre-built components, such as buttons, menus, and dialog boxes, that can be easily integrated into Angular applications.
Best of React Projects
ReactJS is a popular JavaScript library used for building user interfaces. It was developed by Facebook and is currently maintained by Facebook and a community of developers.
React allows developers to create reusable UI components, making it easier to build complex applications with a modular approach.
React is also known for its efficient rendering process, using a virtual DOM to minimize the number of actual DOM manipulations needed.
This makes React a popular choice for building large-scale, high-performance web applications.
I had the opportunity to work with React in personal projects and professionally. I will be listing some of my best projects here so check back often for updates.
React Projects:
- Match with React – This project was a Udemy project using React to create a small Concentration type matching game.
- Local weather App using Next.js
- and more to come…
- Project Types: React
- React Documentation: The official website for Angular, maintained by the Angular team at Google. The website has comprehensive documentation, tutorials, and guides for developers who want to learn how to use Angular.
- React Bootstrap: A library that provides developers with pre-built UI components that can be easily integrated into React applications. This library is built on top of Bootstrap, a popular CSS framework for building responsive web applications, and provides developers with a range of pre-built components, such as buttons, forms, and modal windows.
- Redux: A library that provides developers with a predictable state container for JavaScript applications. This library can be used with React to manage the state of an application in a predictable way.
Next.js
Next.js is an open-source framework for building modern web applications using React, a popular JavaScript library for building user interfaces. Next.js adds powerful features to React, such as server-side rendering, automatic code splitting, and optimized performance. It was created by the developers at Vercel, formerly known as Zeit, and has gained popularity among web developers for its ease of use and flexibility. With Next.js, developers can easily create dynamic, scalable, and fast web applications with minimal configuration and setup, making it an ideal choice for building complex web projects.
Project coming soon…
FREELANCE SERVICES
Desktop Apps
They can be used for a wide range of purposes, including word processing, media editing, project management, and more.
Mobile Apps
Mobile applications, or mobile apps, are software applications designed to run on mobile devices such as smartphones and tablets.
Web Development
This encompasses a wide range of tasks, including design, content development, client and server-side scripting, and database management
Security System
With the increasing number of cyber threats and data breaches, digital security has become a crucial aspect of security systems.
Custom Algorithm
By creating a custom algorithm, I can design a solution that meets the specific needs and requirements of your project.
Web Consulting
Web consulting is essential for businesses that want to improve their online presence and reach their target audience effectively.
From My Blog
Top 5 Benefits of Using Drush with Your Drupal Website
When it comes to managing and maintaining your Drupal website, having the right tools at your disposal can significantly enhance your workflow and efficiency. One such tool that has gained immense popularity among Drupal developers is Drush (short for Drupal Shell). Drush is a command-line interface (CLI) tool that enables you to interact with your Drupal site using simple commands. In this blog post, we will explore the top five benefits of using Drush with your Drupal website.
1. Efficient Site Management:
One of the primary advantages of using Drush is the ability to perform a wide range of site management tasks quickly and efficiently. Whether you need to clear caches, update modules, enable or disable features, or perform database updates, Drush simplifies these operations with its intuitive command structure. With just a few keystrokes, you can execute complex tasks that would otherwise require multiple clicks and page loads in the Drupal admin interface.
2. Automation and Scripting:
Drush allows you to automate repetitive tasks and create scripts, making it an invaluable tool for developers and site administrators. By combining multiple Drush commands, you can create powerful scripts to perform tasks such as site backups, deployment, and configuration synchronization. Automation not only saves time but also reduces the risk of human error, ensuring consistent and reliable results across your Drupal installations.
3. Module Management Made Easy:
Drupal’s module ecosystem is vast, with thousands of contributed modules available for various functionalities. Managing these modules can become cumbersome, especially when dealing with multiple sites. Drush simplifies module management by providing commands to install, update, enable, and disable modules. With Drush, you can easily keep your modules up to date, ensuring optimal performance, security, and compatibility with your Drupal site.
4. Fast and Convenient Drupal Core Updates:
Keeping your Drupal core up to date is crucial for maintaining a secure and stable website. Drush streamlines the process of updating Drupal core by providing a simple command to download and apply updates. With Drush, you can quickly check for available updates, download the latest version, and apply patches, all from the command line. This eliminates the need to manually download files, extract archives, and perform the update process through the web interface.
5. Powerful Site Migration and Deployment:
Drush simplifies the process of migrating or deploying Drupal sites across different environments. Whether you are moving a site from a development environment to a production server or syncing configurations between multiple instances, Drush offers commands to export and import site configurations, transfer files and databases, and handle other migration-related tasks. These capabilities make Drush an indispensable tool for developers working on Drupal projects involving staging, testing, and production environments.
TLDR;
Drush is a versatile and powerful command-line tool that significantly enhances the management and administration of Drupal websites. From efficient site management to module updates, automation, and deployment, Drush provides a streamlined workflow and simplifies complex tasks. By leveraging Drush’s extensive command library, Drupal developers and site administrators can save time, improve productivity, and ensure a smooth website maintenance experience. If you haven’t already, consider incorporating Drush into your Drupal workflow to unlock its numerous benefits and take your website management to the next level.
Top Ten Tips for Brushing a Chihuahua’s Teeth
Recently, Copper, my nine year old apple-head Chihuahua pictured above center, had to have fourteen teeth removed due to lack of proper brushing. I took this as an opportunity to learn more about how I could be better at brushing his teeth. Here is what I learned.
I learned that brushing your chihuahua’s teeth is an important part of their overall health and well-being. However, it can be a challenging task, especially if your furry friend is not used to it. Here are the top ten tips for brushing a small dog’s teeth:
1. Start Early
The earlier you start brushing your chihuahua’s teeth, the easier it will be for them to get used to it. Ideally, you should start brushing their teeth when they are still a puppy. This will help them develop good dental hygiene habits from an early age.
2. Use a Small Toothbrush
When it comes to brushing a small dog’s teeth, it’s important to use a toothbrush that is specifically designed for their size. A small toothbrush will allow you to reach all the nooks and crannies in their mouth without causing any discomfort.
3. Use Dog Toothpaste
Never use human toothpaste on your chihuahua’s teeth. Human toothpaste contains ingredients that can be harmful to dogs. Instead, use toothpaste that is specifically formulated for dogs. These toothpastes come in flavors that dogs love, such as chicken or beef.
4. Be Gentle
When brushing your chihuahua’s teeth, be gentle. Use a soft-bristled toothbrush and apply gentle pressure. Avoid brushing too hard, as this can cause discomfort and even damage their teeth and gums.
5. Brush in a Circular Motion
When brushing your chihuahua’s teeth, use a circular motion. This will help remove any plaque or tartar buildup on their teeth. Be sure to brush all the surfaces of their teeth, including the front, back, and sides.
6. Use Positive Reinforcement
Positive reinforcement is key when it comes to brushing your chihuahua’s teeth. Reward them with treats or praise after each brushing session. This will help them associate teeth brushing with something positive.
7. Brush Regularly
Brush your chihuahua’s teeth regularly, ideally every day. This will help prevent any dental problems from developing. If you can’t brush their teeth every day, aim for at least three times a week.
8. Check for Signs of Dental Problems
Regularly check your chihuahua’s teeth for any signs of dental problems, such as bad breath, swollen gums, or loose teeth. If you notice any of these signs, take them to the vet as soon as possible.
9. Be Patient
Brushing your chihuahua’s teeth can take time and patience. Don’t get discouraged if they resist at first. Keep trying and be patient. Eventually, they will get used to it.
10. Get Professional Dental Cleanings
Even with regular brushing, your chihuahua may still need professional dental cleanings from time to time. Talk to your vet about scheduling regular cleanings to keep your chihuahua’s teeth healthy and clean.
Conclusion
Brushing your chihuahua’s teeth is an important part of their overall health. By following these top ten tips, you can help keep your furry friend’s teeth healthy and clean. Remember to start early, use a small toothbrush and dog toothpaste, be gentle, brush regularly, and use positive reinforcement. With patience and persistence, your chihuahua will have a healthy and happy smile.
CS Algorithms 101 – RSA
RSA (Rivest-Shamir-Adleman) is a public-key cryptosystem used for secure data transmission. It is based on the mathematical concept of prime factorization. Here is an example of how RSA encryption and decryption can be implemented in JavaScript:
function generateKeys(p, q) { const n = p * q; const phiN = (p - 1) * (q - 1); let e = 2; while (e < phiN && gcd(e, phiN) !== 1) { e++; } const d = modInverse(e, phiN); return { publicKey: { e, n }, privateKey: { d, n } }; } function encrypt(message, publicKey) { const { e, n } = publicKey; return modPow(message, e, n); } function decrypt(ciphertext, privateKey) { const { d, n } = privateKey; return modPow(ciphertext, d, n); } function gcd(a, b) { if (b === 0) { return a; } else { return gcd(b, a % b); } } function modPow(base, exponent, modulus) { if (modulus === 1) { return 0; } let result = 1; base = base % modulus; while (exponent > 0) { if (exponent % 2 === 1) { result = (result * base) % modulus; } exponent = Math.floor(exponent / 2); base = (base * base) % modulus; } return result; } function modInverse(a, m) { a = a % m; for (let x = 1; x < m; x++) { if ((a * x) % m === 1) { return x; } } return 1; } // Example usage const p = 11; const q = 13; const message = 7; const keys = generateKeys(p, q); const ciphertext = encrypt(message, keys.publicKey); const plaintext = decrypt(ciphertext, keys.privateKey); console.log(`Encrypted message: ${ciphertext}`); console.log(`Decrypted message: ${plaintext}`);
Here are the steps for RSA encryption and decryption using JavaScript:
Generate two large prime numbers p and q and calculate their product n. These two numbers will be used to generate the public and private keys.
Calculate the Euler totient function of n, denoted by phi(n). This value is equal to (p-1) * (q-1).
Choose a public exponent e that is relatively prime to phi(n). In this example, we choose the smallest possible value e = 2 and increment it until we find an e that is relatively prime to phi(n).
Calculate the private exponent d such that d * e ≡ 1 (mod phi(n)). This can be done using the Extended Euclidean Algorithm or by calculating the modular multiplicative inverse of e modulo phi(n).
The public key consists of the pair (e, n) and the private key consists of the pair (d, n).
To encrypt a message, we convert it to a numerical value using a predetermined mapping, and then raise it to the power of e modulo n.
To decrypt the ciphertext, we raise it to the power of d modulo n.
To ensure the security of the RSA algorithm, it is essential to choose large prime numbers for p and q. These primes should be kept secret and should not be disclosed to anyone.
In summary, RSA encryption and decryption involve the use of a public key and a private key. The public key is used to encrypt messages, and the private key is used to decrypt them. The security of the algorithm relies on the fact that it is computationally infeasible to factorize large numbers into their prime factors. Therefore, an attacker cannot derive the private key from the public key, and hence, the message remains secure.