<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: mwpenn94</title>
    <description>The latest articles on DEV Community by mwpenn94 (@mwpenn94).</description>
    <link>https://dev.to/mwpenn94</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F704195%2F2db37a9a-1787-4189-9477-b7fb8d8a0847.png</url>
      <title>DEV Community: mwpenn94</title>
      <link>https://dev.to/mwpenn94</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mwpenn94"/>
    <language>en</language>
    <item>
      <title>Friendly Advice from A Software Engineering Graduate to New and Prospective Students</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Sat, 29 Jan 2022 08:01:52 +0000</pubDate>
      <link>https://dev.to/mwpenn94/friendly-advice-from-a-software-engineering-graduate-to-new-and-prospective-students-51i7</link>
      <guid>https://dev.to/mwpenn94/friendly-advice-from-a-software-engineering-graduate-to-new-and-prospective-students-51i7</guid>
      <description>&lt;p&gt;To all aspiring and actively achieving their goals of becoming a software engineer today, here's a shout out of support and encouragement with friendly recommendations from someone who has shared your enthusiasm for over a year as a student and as a webmaster. On behalf of our community of learners, teachers, tinkerers, and more, welcome! I hope this will help you navigate what can occasionally feel as choppy, difficult to navigate seas in our ever-exponentially-expanding world of new technologies and abstract concepts and ideas leveraged through our machines:&lt;/p&gt;

&lt;p&gt;-Be proactive. Whether studying a new language, framework, and/or related concept, etc., creating, updating, and/or maintaining your own contributions to the seemingly innumerable lines of code that have offered greater simplicity and efficiency to people the world over, maintain a thirst for knowledge and for results. A desire and willingness to learn and progress is not only highly desirable, but intrinsic to being able to understand systems and abstract them away via code, and thus essential. As a self-paced/self-study full-stack software engineering student at the Flatiron School, my success was directly tied to my enthusiasm and willingness to immerse myself in the course material; at times, exhaust my ability to ask questions and search for answers related to topics, and learn about new and emerging practices that built on already fine-tuned lesson material. &lt;/p&gt;

&lt;p&gt;-Be humble and build from a solid foundation. Break down projects and problems to simple, easy to execute steps and solutions, and continue building up from there. Flatiron exemplifies and validates this approach in training and employing thousands of software engineers by beginning with fundamental concepts such as DRY code, CRUD, MVC structure, RESTful routing, and coding with language syntax, then building on these and showing how they incorporate into newer frameworks, from Ruby, to Sinatra, to Ruby on Rails, to fullstack Ruby on Rails and JavaScript, to fullstack Ruby on Rails and ReactJS.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>PHP Promotional Application</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Sat, 29 Jan 2022 06:49:40 +0000</pubDate>
      <link>https://dev.to/mwpenn94/php-promotional-application-2mh5</link>
      <guid>https://dev.to/mwpenn94/php-promotional-application-2mh5</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/mwpenn94/jason-malabute-promo"&gt;TLTR: Feel free to get the source code.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  App Design
&lt;/h2&gt;

&lt;p&gt;The overall plan for this application was to design a web site for light, instant deployment, leaving opportunity to easily maintain and update the codebase for simple functionality, lightly scale functionality with the same base, or replace the original code with a more component-friendly structure through Rails React or others depending on intended future project goals. &lt;/p&gt;

&lt;p&gt;Based on the requirements, the app allows users CRUD functionality allows users with necessary permissions CRUD functionality for form generation and customer feedback.&lt;/p&gt;

&lt;p&gt;Similar to large scale counterparts, it is designed for straightforward use with minimal explanation required for the user.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Rails React Streaming SPA</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Thu, 27 Jan 2022 09:21:24 +0000</pubDate>
      <link>https://dev.to/mwpenn94/kaleidoscope-rails-react-streaming-spa-294h</link>
      <guid>https://dev.to/mwpenn94/kaleidoscope-rails-react-streaming-spa-294h</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/mwpenn94/kaleidoscope"&gt;TLTR: Feel free to get the source code.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;-The code should be written in ES6 as much as possible&lt;/p&gt;

&lt;p&gt;-Use the create-react-app generator to start the project&lt;/p&gt;

&lt;p&gt;-The Application should have one HTML page to render your react-redux application&lt;/p&gt;

&lt;p&gt;-There should be 5 stateless components&lt;/p&gt;

&lt;p&gt;-There should be 3 routes&lt;/p&gt;

&lt;p&gt;-The Application must make use of react-router and proper RESTful routing &lt;/p&gt;

&lt;p&gt;-Use Redux middleware to respond to and modify state change&lt;/p&gt;

&lt;p&gt;-Make use of async actions and redux-thunk middleware to send data to and receive data from a server&lt;/p&gt;

&lt;p&gt;-The Rails API should handle the data persistence with a database. &lt;/p&gt;

&lt;p&gt;-Use fetch() within actions to GET and POST data from the API - do not use jQuery methods.&lt;/p&gt;

&lt;p&gt;-The client-side application should handle the display of data with minimal data manipulation&lt;/p&gt;

&lt;h2&gt;
  
  
  App Design
&lt;/h2&gt;

&lt;p&gt;The overall plan for this single page application was to design a web site with a full-stack design using a Rails backend with a ReactJS frontend.&lt;/p&gt;

&lt;p&gt;Based on the requirements, the app allows users CRUD functionality allows users CRUD functionality for their own streams.&lt;/p&gt;

&lt;p&gt;Similar to large scale counterparts, it is designed for straightforward use with minimal explanation required for the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend Design
&lt;/h2&gt;

&lt;p&gt;See the "backend/app/javascript" directory for more info.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backend Design
&lt;/h2&gt;

&lt;p&gt;See the "backend" directory for more info.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Rails JavaScript Ecommerce SPA</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Tue, 14 Dec 2021 02:26:55 +0000</pubDate>
      <link>https://dev.to/mwpenn94/rails-javascript-ecommerce-spa-4fdo</link>
      <guid>https://dev.to/mwpenn94/rails-javascript-ecommerce-spa-4fdo</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/mwpenn94/AmaZing-Deals-Ecommerce-SPA"&gt;TLTR: Feel free to get the source code.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;-The application must be an HTML, CSS, and JavaScript frontend with a Rails API backend. All interactions between the client and the server must be handled asynchronously (AJAX) and use JSON as the communication format.&lt;/p&gt;

&lt;p&gt;-The JavaScript application must use Object Oriented JavaScript (classes) to encapsulate related data and behavior.&lt;/p&gt;

&lt;p&gt;-The domain model served by the Rails backend must include a resource with at least one has-many relationship. For example, if you were building an Instagram clone, you might display a list of photos with associated comments.&lt;/p&gt;

&lt;p&gt;-The backend and frontend must collaborate to demonstrate Client-Server Communication. Your application should have at least 3 AJAX calls, covering at least 2 of Create, Read, Update, and Delete (CRUD). Your client-side JavaScript code must use fetch with the appropriate HTTP verb, and your Rails API should use RESTful conventions.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Design
&lt;/h2&gt;

&lt;p&gt;The overall plan for this single page application was to design a web site with a full-stack design using a Rails backend with a JavaScript frontend.&lt;/p&gt;

&lt;p&gt;Based on the requirements, the app allows users CRUD functionality across multiple objects involved in a large-scale ecommerce marketplace application -products, reviews, carts, lineitems, orders, etc.&lt;/p&gt;

&lt;p&gt;Similar to large scale counterparts, it is designed for straightforward use with minimal explanation required for the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Design
&lt;/h2&gt;

&lt;p&gt;See the schema for more info.&lt;/p&gt;

&lt;h2&gt;
  
  
  Controller Design
&lt;/h2&gt;

&lt;p&gt;See the controllers folder for more info.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Rails Ecommerce App</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Sat, 23 Oct 2021 02:09:10 +0000</pubDate>
      <link>https://dev.to/mwpenn94/rails-ecommerce-app-1of</link>
      <guid>https://dev.to/mwpenn94/rails-ecommerce-app-1of</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Ruby on Rails for the project&lt;/li&gt;
&lt;li&gt;Include at least one has_many relationship (x has_many y; e.g. User has_many Recipes) &lt;/li&gt;
&lt;li&gt;Include at least one belongs_to relationship (x belongs_to y; e.g. Post belongs_to User)&lt;/li&gt;
&lt;li&gt;Include at least two has_many through relationships (x has_many y through z; e.g. Recipe has_many Items through Ingredients)&lt;/li&gt;
&lt;li&gt;Include at least one many-to-many relationship (x has_many y through z, y has_many x through z; e.g. Recipe has_many Items through Ingredients, Item has_many Recipes through Ingredients)&lt;/li&gt;
&lt;li&gt;The "through" part of the has_many through includes at least one user submittable attribute, that is to say, some attribute other than its foreign keys that can be submitted by the app's user (attribute_name e.g. ingredients.quantity)&lt;/li&gt;
&lt;li&gt;Include reasonable validations for simple model objects (list of model objects with validations e.g. User, Recipe, Ingredient, Item)&lt;/li&gt;
&lt;li&gt;Include a class level ActiveRecord scope method (model object &amp;amp; class method name and URL to see the working feature e.g. User.most_recipes URL: /users/most_recipes)&lt;/li&gt;
&lt;li&gt;Include signup (how e.g. Devise)&lt;/li&gt;
&lt;li&gt;Include login (how e.g. Devise)&lt;/li&gt;
&lt;li&gt;Include logout (how e.g. Devise)&lt;/li&gt;
&lt;li&gt;Include third party signup/login (how e.g. Devise/OmniAuth)&lt;/li&gt;
&lt;li&gt;Include nested resource show or index (URL e.g. users/2/recipes)&lt;/li&gt;
&lt;li&gt;Include nested resource "new" form (URL e.g. recipes/1/ingredients/new)&lt;/li&gt;
&lt;li&gt;Include form display of validation errors (form URL e.g. /recipes/new&lt;/li&gt;
&lt;li&gt;The application is pretty DRY&lt;/li&gt;
&lt;li&gt;Limited logic in controllers&lt;/li&gt;
&lt;li&gt;Views use helper methods if appropriate&lt;/li&gt;
&lt;li&gt;Views use partials if appropriate
TLTR: Feel free to get the &lt;a href="https://github.com/mwpenn94/Amazing-Deals-Ecommerce-Example"&gt;source code&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;App Design&lt;/strong&gt;&lt;br&gt;
The overall plan for this app was to design a web site with a full-stack design using Rails.&lt;/p&gt;

&lt;p&gt;Based on the requirements, the app allows users CRUD functionality across multiple objects involved in a large scale ecommerce marketplace applicaton -departments, categories, products, questions, answers, reviews, tags, carts, lineitems, orders, etc.&lt;/p&gt;

&lt;p&gt;Similar to large scale counterparts, it is designed for straightforward use with minimal explanation required for the user.&lt;/p&gt;

&lt;p&gt;Omniauth Github authentication has been included for ease of access. See spec.md in the roort directory for a list of additional features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;br&gt;
To handle the security of the user model, this app utilizes the bcrypt gem to secure the session_secret.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Design&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/mwpenn94/Amazing-Deals-Ecommerce-App/blob/master/db/schema.rb"&gt;See the schema for more info.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controller Design&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/mwpenn94/Amazing-Deals-Ecommerce-App/tree/master/app/controllers"&gt;See the controllers folder for more info.&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Sinatra ActiveRecord Ecommerce App</title>
      <dc:creator>mwpenn94</dc:creator>
      <pubDate>Sun, 12 Sep 2021 01:15:04 +0000</pubDate>
      <link>https://dev.to/mwpenn94/sinatra-activerecord-ecommerce-app-1fal</link>
      <guid>https://dev.to/mwpenn94/sinatra-activerecord-ecommerce-app-1fal</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;-Build an MVC Sinatra application.&lt;br&gt;
-Use ActiveRecord with Sinatra.&lt;br&gt;
-Use multiple models.&lt;br&gt;
-Use at least one has_many relationship on a User model and one belongs_to relationship on another model.&lt;br&gt;
-Must have user accounts - users must be able to sign up, sign in, and sign out.&lt;br&gt;
-Validate uniqueness of user login attribute (username or email).&lt;br&gt;
-Once logged in, a user must have the ability to create, read, update and destroy (CRUD) the resource that belongs_to user.&lt;br&gt;
-Ensure that users can edit and delete only their own resources - not resources created by other users.&lt;br&gt;
-Validate user input so bad data cannot be persisted to the database.&lt;br&gt;
-BONUS: Display validation failures to user with error messages. (This is an optional feature, challenge yourself and give it a shot!)&lt;br&gt;
TLTR: Feel free to get the &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app"&gt;source code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Design
&lt;/h2&gt;

&lt;p&gt;The overall plan for this app was to design a web site with a full-stack design, using Sinatra back-end, and ERB files to display the front-end.&lt;/p&gt;

&lt;p&gt;Based on the requirements the site includes a user account model which allows the end user to create, read, update, and delete their own orders secure from other users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;To handle the security of the user model, this app utilizes the bcrypt gem to secure the session_secret.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Design
&lt;/h2&gt;

&lt;p&gt;The database design is fairly simple. First the &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app/blob/main/db/migrate/20210825024333_create_users.rb"&gt;users table&lt;/a&gt; contains fields for username, email and password_digest as the password field.&lt;/p&gt;

&lt;p&gt;Each &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app/blob/main/db/migrate/20210825024353_create_orders.rb"&gt;orders table&lt;/a&gt; belongs_to a User based upon each orders user_id.&lt;/p&gt;

&lt;h2&gt;
  
  
  Controller Design
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app/blob/main/app/controllers/application_controller.rb"&gt;application_controller&lt;/a&gt; controls the app. It includes the security setup, sets the root path, and includes a few helpers methods for the user model. Specifically, the current_user method which is used to compare the user and session_id to orders later in the source code.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app/blob/main/app/controllers/users_controller.rb"&gt;users_controller&lt;/a&gt; concerns validating the user account creation and login.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/mwpenn94/sinatra-content-management-system-app/blob/main/app/controllers/orders_controller.rb"&gt;orders_controller&lt;/a&gt; concerns orders creation, reading, updating, and deleting for the respective user to which they each belong.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
