<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Work Archive - Michael Soriano</title>
	<atom:link href="https://michaelsoriano.com/work/feed/" rel="self" type="application/rss+xml" />
	<link>https://michaelsoriano.com/work/</link>
	<description>I turn code into captivating user experiences for the web</description>
	<lastBuildDate>Wed, 16 Nov 2022 18:17:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.4</generator>
	<item>
		<title>One Time Payments</title>
		<link>https://michaelsoriano.com/work/one-time-payments/</link>
					<comments>https://michaelsoriano.com/work/one-time-payments/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Wed, 09 Mar 2022 00:59:23 +0000</pubDate>
				<guid isPermaLink="false">https://michaelsoriano.com/?post_type=work&#038;p=7505</guid>

					<description><![CDATA[<p>A lot of business processes have been developed in-house to stream line employee&#8217;s daily activities. One such application is One Time Payments (OTP) &#8211; a system that makes it easy for employees to submit &#8211; well, payments. These payments can vary from bonuses, awards, tuition reimbursements and so forth. My involvement on this project was [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/one-time-payments/">One Time Payments</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A lot of business processes have been developed in-house to stream line employee&#8217;s daily activities. One such application is One Time Payments (OTP) &#8211; a system that makes it easy for employees to submit &#8211; well, <em>payments</em>. These payments can vary from bonuses, awards, tuition reimbursements and so forth.</p>
<p>My involvement on this project was lead developer, as well as UX engineer.</p>
<p>The simplified workflow is shown below:</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-7893" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-process.png" alt="" width="900" height="501" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-process.png 900w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-process-300x167.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-process-768x428.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<h3>Behind the Scenes</h3>
<p>As much as I like working on the front end of things, most of the development is in the backend. There are countless &#8220;Batch Jobs&#8221; that run on a schedule that ensures that each record follow specific guidelines. This includes if employees (both submitter and payee) are in good status. There are specific codes that trigger a warning &#8211; if one do not pass. Another check is making sure that the timeline aligns with specific pay sheets, as well as making sure the currency matches.</p>
<p>A separate process also makes sure that the manager is reminded for approval. The notification system is via email, so a check has to be done if the manager has taken action &#8211; or else, we bug them again. A whole separate process happens when an OTP gets rejected.</p>
<p>Once the record makes it to the end of the validation, it gets processed for payment. This means we have to created a file and store in a central location, for another software to pickup.</p>
<h3>The Front End</h3>
<p>This is the part that I enjoy building the most. The planning started with a series of wireframes. The wireframes are done in Figma, with iterations and approvals with the stakeholders. We use Jira to keep these conversations flowing.</p>
<p>A simplified version of the form entry is shown below:</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7524" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-1.png" alt="OTP Wifreframe 1" width="1175" height="562" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-1.png 1175w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-1-300x143.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-1-1024x490.png 1024w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-1-768x367.png 768w" sizes="(max-width: 1175px) 100vw, 1175px" /></p>
<p>&nbsp;</p>
<p>The form is all JavaScript driven. It&#8217;s a single page application that talks to a couple of API endpoints. To support the form design, a master-detail relationship has to be done with the data. For each record, you can add multiple charge codes, as well as header approvals. So in total, three main tables are required.</p>
<p>The screenshot below shows the ability for users to add multiple charge codes per OTP.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7513" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-3.png" alt="OTP - add line" width="678" height="366" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-3.png 678w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-3-300x162.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></p>
<p>We used a framework called LWC, which has a design system attached to it. And while a lot of components are available and ready to use, I ended up having to build a lot from scratch. Things like custom fields with ajax validations, file uploads, people pickers, modals etc.</p>
<h3>The Landing Page</h3>
<p>Set aside the form for a minute and let&#8217;s talk about the landing page. So many users create OTPs so much &#8211; that they need a landing page to see the status of their records. This basically becomes the &#8220;home&#8221; of the application, with their records showing in a list format.</p>
<p>From this page, they can filter records, do a search by name or record id. They can also launch a new payment from here.</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p><img decoding="async" class="alignnone size-full wp-image-7510" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-2.png" alt="OTP callouts" width="803" height="620" /></p>
<p>Quick actions are also added such as &#8220;<em>recall</em>&#8221; and &#8220;<em>delete</em>&#8221; so users don&#8217;t have to bring up the record. They can simply do it from this page.</p>
<p>Pagination and tabbed views are also added for ease of use. The animation below shows a brief overview of what the application can do:</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7565" style="border: 1px solid #ebebeb;" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-motion-2.gif" alt="OTP animated" width="863" height="618" /></p>
<p>&nbsp;</p>
<h3>Summary View</h3>
<p>For each OTP, each charge codes require a manager&#8217;s approval. This can be just a single person, but most if the time, its different managers. There&#8217;s a view of the form that all the fields are read only, with action buttons for each line item. This view is smart enough to know who the current viewer is, and for which line he/she has access to click.</p>
<p>Note that front and back end validation is in place for security. So even if the viewer is savvy enough to hack the view, the server side knows who the current user is &#8211; and extra checks are in place so the approvals can&#8217;t be overridden.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7525" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-2.png" alt="OTP - Wireframe 2" width="1235" height="600" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-2.png 1235w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-2-300x146.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-2-1024x497.png 1024w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-wf-2-768x373.png 768w" sizes="(max-width: 1235px) 100vw, 1235px" /></p>
<p>A simplified version of the wireframes is shown above. Also worth noting &#8211; that each view is mobile friendly and thoroughly tested with modern phones.</p>
<p>An actual screenshot of how the action buttons look, if the user has access to it.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7509" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-1.png" alt="" width="678" height="366" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-1.png 678w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-1-300x162.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></p>
<p>A few more screenshots of how the application looks in a mobile device. Even though most of OTP&#8217;s users are using desktop, the full functionality is available in mobile. In addition, there are a few customizations that have been built to handle mobile users.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7515" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-4.png" alt="OTP mobile" width="750" height="474" /></p>
<p>Overall, the project was a great success. Many users consider OTP a huge time-saver. It ultimately replaced quite a few legacy systems we used in the past. Many especially liked the UX and the details that went into the process.</p>
<p>Finally, below is a screenshot of the files and how many lines of code that makes up the application. As mentioned, most of the code is server side (Apex) and the rest is front end languages such as JavaScript, CSS and HTML.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7560" src="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-cloc.png" alt="OTP cloc" width="750" height="390" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/otp-cloc.png 750w, https://michaelsoriano.com/wp-content/uploads/2022/03/otp-cloc-300x156.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>&nbsp;</p>
<p>The post <a href="https://michaelsoriano.com/work/one-time-payments/">One Time Payments</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/one-time-payments/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Virtual World</title>
		<link>https://michaelsoriano.com/work/virtual-world/</link>
					<comments>https://michaelsoriano.com/work/virtual-world/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Sun, 26 Dec 2021 23:45:18 +0000</pubDate>
				<guid isPermaLink="false">https://michaelsoriano.com/?post_type=work&#038;p=7543</guid>

					<description><![CDATA[<p>Our Enterprise marketing group had come up with an idea of having a presentation tool to use in conferences and meetups. They were thinking of an interface that shows the company projects and installments throughout the globe. An interactive map, that have pins and markers that when clicked, shows more information about that project. They [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/virtual-world/">Virtual World</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Our Enterprise marketing group had come up with an idea of having a presentation tool to use in conferences and meetups. They were thinking of an interface that shows the company projects and installments throughout the globe. An interactive map, that have pins and markers that when clicked, shows more information about that project. They also wanted something that they can easily update and ultimately tailor to each event. They wanted to call it &#8220;<em>Virtual World</em>&#8220;.</p>
<p>My role for this project is Lead Developer. The project was done in React and WordPress.</p>
<p>The basic functionality is shown in this diagram:</p>
<p><img decoding="async" class="alignnone size-full wp-image-7894" src="https://michaelsoriano.com/wp-content/uploads/2021/12/vw-notes.png" alt="" width="900" height="501" srcset="https://michaelsoriano.com/wp-content/uploads/2021/12/vw-notes.png 900w, https://michaelsoriano.com/wp-content/uploads/2021/12/vw-notes-300x167.png 300w, https://michaelsoriano.com/wp-content/uploads/2021/12/vw-notes-768x428.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p>Several rounds of wireframes and prototypes were done in Figma. A quick representation is shown below.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7554" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-diagram-main.png" alt="Virtual World Diagram 1" width="1126" height="471" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-diagram-main.png 1126w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-diagram-main-300x125.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-diagram-main-1024x428.png 1024w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-diagram-main-768x321.png 768w" sizes="(max-width: 1126px) 100vw, 1126px" /></p>
<p>&nbsp;</p>
<p>The public side of the application is a map. I used Leaflet for the map technology, along with Mapbox for the map styling. All interactions happen as layers on top of the map &#8211; either as modals or sliding sidebars. And since the application is wrapped inside our existing WordPress site, it had to use Bootstrap because it was already loaded on the page.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7544" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-2.png" alt="Virtual World - Marker" width="803" height="538" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-2.png 803w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-2-300x201.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-2-768x515.png 768w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<p>The company branding had to reflect in the map elements. This includes typography, icons, images, markers and backgrounds.</p>
<h3>Plotting Locations</h3>
<p>So for the markers on the map, I created a custom post type that can be entered in the admin area. For each record, I had to provide an easy way for the locations to pull up, as well as plot the coordinates automatically. A little help from Google Places API did the trick.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7553" style="margin-left: 0px; width: 75%;" src="https://michaelsoriano.com/wp-content/uploads/2022/03/vworld-plots.gif" alt="Virtual World - Plots" width="741" height="460" /></p>
<p>The users simply add an address and the API would come back with suggestions. The coordinates that is required for the marker placement is handled upon selecting a valid address.</p>
<h3>Highlighting Parts of an Image</h3>
<p>So as soon as a product marker is clicked, a side modal appears on the right side of the page. This includes more information about the product. In most cases, a hero image is presented along with marked sections highlighting key functionalities of the product.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7545" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-3.jpg" alt="Virtual world - Single" width="803" height="476" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-3.jpg 803w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-3-300x178.jpg 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-3-768x455.jpg 768w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<p>This is done using CSS Positioning on the actual image. In the backend, users simply estimate the coordinates on where they want the pin to appear. This is done using input sliders.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7552" style="margin-left: 15px;" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-4.png" alt="Virtual World - admin" width="603" height="375" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-4.png 603w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-4-300x187.png 300w" sizes="(max-width: 603px) 100vw, 603px" /></p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p>All of this done using custom meta boxes, mainly using jQuery and HTML in the WordPress admin area.</p>
<h3>Search and Filters</h3>
<p>In addition to the map, there is also the ability to filter the pins. This allows the presenter, to only focus on a pre-defined set of projects.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7547" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-1.png" alt="Virtual World - Filters" width="803" height="576" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-1.png 803w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-1-300x215.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-1-768x551.png 768w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<p>The search mechanism is a simple text match query. The term looks inside the title, category and description &#8211; which sort of acts like a filter as well. There is an additional &#8220;<em>Advanced Market filter</em>&#8221; sidebar, which I thought was redundant. It&#8217;s also a set of filters, but instead of icons, checkboxes with labels are used.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7548" src="https://michaelsoriano.com/wp-content/uploads/2022/03/vworld-motion.gif" alt="Virtual World Motion" width="1023" height="572" /></p>
<p>&nbsp;</p>
<p>Finally, although really designed for wider screens &#8211; I had to make it &#8220;semi&#8221; usable in mobile devices. The map responds to smaller screens pretty well. Although there&#8217;s not much we can do as far as presenting both the map and the overlays at the same time.</p>
<p>In the end, the sidebars and modals simply take up the entire screen, giving the user an option to close it.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7549" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-mobile.png" alt="Virtual World - Mobile" width="750" height="474" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-mobile.png 750w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-mobile-300x190.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>Using a framework like React as well as JavaScript modules is pretty remarkable. This ultimately allows developers to build a fairly complicated application, with just a few lines of code.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7561" src="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-cloc.png" alt="Virtual World cloc" width="737" height="367" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-cloc.png 737w, https://michaelsoriano.com/wp-content/uploads/2022/03/virtual-world-cloc-300x149.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></p>
<p>&nbsp;</p>
<p>Virtual world took approximately two weeks to build. The project was delivered to the owner, with just enough time for users to enter data and get trained on how to present the front end. Continuous improvements are still being implemented to this day.</p>
<p>The post <a href="https://michaelsoriano.com/work/virtual-world/">Virtual World</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/virtual-world/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hardware Request</title>
		<link>https://michaelsoriano.com/work/hardware-request/</link>
					<comments>https://michaelsoriano.com/work/hardware-request/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Sat, 20 Nov 2021 00:52:12 +0000</pubDate>
				<guid isPermaLink="false">https://michaelsoriano.com/?post_type=work&#038;p=7490</guid>

					<description><![CDATA[<p>Every employee needs hardware. At Parsons, we needed an easy way for employees to order them. The old process was for each employee submit an online form, where they first they have to refer to a an approved list of items. When they find what they need from this list, they have to copy and [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/hardware-request/">Hardware Request</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Every employee needs hardware. At Parsons, we needed an easy way for employees to order them. The old process was for each employee submit an online form, where they first they have to refer to a an approved list of items. When they find what they need from this list, they have to copy and paste the item code onto the form, then submit. This submission sends an email to the folks ordering the item, and they enter it manually to another system.</p>
<p>Yes &#8211; it was archaic.</p>
<p>The Hardware/Software Request system was created to replace this. My role was Lead Developer and UX engineer.</p>
<p>The diagram below describes how the system will work.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7895" src="https://michaelsoriano.com/wp-content/uploads/2021/11/hws-notes.png" alt="" width="900" height="501" srcset="https://michaelsoriano.com/wp-content/uploads/2021/11/hws-notes.png 900w, https://michaelsoriano.com/wp-content/uploads/2021/11/hws-notes-300x167.png 300w, https://michaelsoriano.com/wp-content/uploads/2021/11/hws-notes-768x428.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p>So we&#8217;re building a &#8220;<em>Shopping Cart</em>&#8221; system. Not a complicated one &#8211; just one that will work with our employees. So we didn&#8217;t need all the bells, nor the whistles of a full e-commerce site. The image below was taken from a series of wireframes done in Figma.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7538" src="https://michaelsoriano.com/wp-content/uploads/2022/03/hw-wireframe.png" alt="Hardware Request Wireframe" width="1150" height="525" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/hw-wireframe.png 1150w, https://michaelsoriano.com/wp-content/uploads/2022/03/hw-wireframe-300x137.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/hw-wireframe-1024x467.png 1024w, https://michaelsoriano.com/wp-content/uploads/2022/03/hw-wireframe-768x351.png 768w" sizes="(max-width: 1150px) 100vw, 1150px" /></p>
<p>As you can see, the process is simple. Browse, add to cart and submit.</p>
<h3>The Catalog</h3>
<p>The design of the catalog is pretty straightforward. It will be two columns, with search and filters on the left, while the list of products in the main container.</p>
<p>I&#8217;ve also added small design elements such as a progress bar. This acts sort of like a &#8220;breadcrumb&#8221; &#8211; to let users become aware of the steps.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7503" src="https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-landing1.png" alt="OHS landing page" width="901" height="516" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-landing1.png 901w, https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-landing1-300x172.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-landing1-768x440.png 768w" sizes="(max-width: 901px) 100vw, 901px" /></p>
<p>&nbsp;</p>
<p>I&#8217;ve decided to bring the whole product dataset on load. This is against the regular pattern of grabbing small result sets at a time. But since I already know that there will never be a lot of products &#8211; I think it&#8217;s worth bringing the whole thing in.</p>
<p>The results are fast and snappy searches, filtering and paging.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7533" src="https://michaelsoriano.com/wp-content/uploads/2022/03/hr-motion.gif" alt="hardware request motion" width="817" height="635" /></p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p>&nbsp;</p>
<p>Details of the each product is also shown in a modal once clicked. This product detail has a mini carousel that shows the product images.</p>
<h3>The Shopping Cart</h3>
<p>Once the user goes to view the cart, the search and filters disappear and the progress bar advances to the next step.  Directly below are the details necessary to complete the order. So its basically the shopping cart and checkout in one page.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7504" src="https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-checkout.png" alt="OHS Checkout" width="901" height="516" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-checkout.png 901w, https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-checkout-300x172.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/ohs-checkout-768x440.png 768w" sizes="(max-width: 901px) 100vw, 901px" /></p>
<p>&nbsp;</p>
<p>Just like a regular cart, users can update/remove the items in the cart. The price automatically adjusts accordingly.</p>
<p>There is no payment or credit card information necessary. We utilize &#8220;<em>charge codes</em>&#8220;, so the department pays for the order. The shipping address is pre-filled with the users information, but they also have a chance to change it.</p>
<p>Once the form submits, it writes to the tables, as well as another API is called to process the order.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7537" src="https://michaelsoriano.com/wp-content/uploads/2022/03/hardware-request-mobile.png" alt="hardware mobile" width="750" height="474" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/hardware-request-mobile.png 750w, https://michaelsoriano.com/wp-content/uploads/2022/03/hardware-request-mobile-300x190.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>The screens above show how the software looks in a mobile phone. A lot of our users actually order through their phones.</p>
<p>Finally, the image below shows a quick summary of the files and lines of code that make up the application.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7559" src="https://michaelsoriano.com/wp-content/uploads/2021/11/hardware-request-cloc.png" alt="hws cloc" width="750" height="366" srcset="https://michaelsoriano.com/wp-content/uploads/2021/11/hardware-request-cloc.png 750w, https://michaelsoriano.com/wp-content/uploads/2021/11/hardware-request-cloc-300x146.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>&nbsp;</p>
<p>The project was a big success. So successful that we&#8217;ve added the ability to order software to it as well. Users are thrilled that they can now order hardware easily &#8211; a big improvement from the old system.</p>
<p>The post <a href="https://michaelsoriano.com/work/hardware-request/">Hardware Request</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/hardware-request/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ParRisk</title>
		<link>https://michaelsoriano.com/work/parrisk/</link>
					<comments>https://michaelsoriano.com/work/parrisk/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Thu, 09 Sep 2021 23:45:04 +0000</pubDate>
				<guid isPermaLink="false">https://michaelsoriano.com/?post_type=work&#038;p=7507</guid>

					<description><![CDATA[<p>A big part of Parsons&#8217; business is to analyze and manage risks. Risks can come from any direction and in any form. Without a system that can track and study these risks, the consequences can be dangerous. ParRisk is a software that is designed to do just that. My role for this project is primary [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/parrisk/">ParRisk</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A big part of Parsons&#8217; business is to analyze and manage risks. Risks can come from any direction and in any form. Without a system that can track and study these risks, the consequences can be dangerous. ParRisk is a software that is designed to do just that. My role for this project is primary developer and UX engineer.</p>
<p>In a nutshell, a user can use this system to enter the risks involved in a project. They will have the ability to add taxonomies, notes as well as add a value to each risk.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7896" src="https://michaelsoriano.com/wp-content/uploads/2021/09/prisk-notes.png" alt="" width="762" height="501" srcset="https://michaelsoriano.com/wp-content/uploads/2021/09/prisk-notes.png 762w, https://michaelsoriano.com/wp-content/uploads/2021/09/prisk-notes-300x197.png 300w" sizes="(max-width: 762px) 100vw, 762px" /></p>
<p>Each risk is project based. Many risks can be assigned to a single project, although risk information can be shared between multiple projects. A custom taxonomy relationship had to be built to support this design. Additional functionality such as archiving, cloning, escalation and flags are all baked in to the system as well.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7516" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-1.png" alt="ParRisk screenshot" width="803" height="576" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-1.png 803w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-1-300x215.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-1-768x551.png 768w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<h3>Creating / Updating Risks</h3>
<p>One of the unique features of the application is the risk entry form. The form itself sits inside a modal &#8211; that appears right on top of the grid. This allows users fast and easy access to more details about the risk, as well as adjust the underlying data.</p>
<p>Below shows a simplified wireframe of the risk form + data row.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7529" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-diagram.png" alt="Par Risk Diagram" width="1137" height="584" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-diagram.png 1137w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-diagram-300x154.png 300w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-diagram-1024x526.png 1024w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-diagram-768x394.png 768w" sizes="(max-width: 1137px) 100vw, 1137px" /></p>
<p>The animation below shows the part of the form with custom sliders. When the sliders are changed, the rating graphic gets updated. This unified graphic approach gives users a quick sense of how each risk should be evaluated.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7518" style="border: 1px solid #cfcfcf;" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-motion-1.gif" alt="ParRisk sliders" width="818" height="262" /></p>
<p>&nbsp;</p>
<p>Another unique feature of the application is a quick overview of the assessments that are in the system. A couple of chart options give the viewer a general scenario of how many assessments need action.</p>
<p>An advanced search form as well as filter options is also added for users find their assessments easily.</p>
<p>&nbsp;</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p><img decoding="async" class="alignnone size-full wp-image-7517" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-motion-3.gif" alt="ParRisk Advanced" width="856" height="644" /></p>
<h3>The Dashboard / Grid</h3>
<p>One of the main features of ParRisk is the Grid. The grid basically shows a project &#8211; along with the corresponding elements that go with it. This includes the areas and categories that can be expanded and collapsed. Inline editing is enabled, so users do not have to jump from one modal to another, just to update information that is already present in the grid.</p>
<p>Tabbed navigation is added to give users a fast way to switch views. This includes access to project information, attachments and reporting.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7519" style="border: 1px solid #cfcfcf;" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-motion-2.gif" alt="ParRisk Grid" width="818" height="507" /></p>
<p>&nbsp;</p>
<p>The real meat of the grid are the risks. Each risk row shows the graphic I mentioned above (inherent and residual risks). The algorithm for determining this graphic is stored in custom metadata &#8211; so it can be adjusted easily, without having to update the source code.</p>
<p>In addition to the desktop view, it also has to be render good in mobile devices.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7520" src="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-2.png" alt="ParRisk Mobile" width="750" height="474" srcset="https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-2.png 750w, https://michaelsoriano.com/wp-content/uploads/2022/03/parrisk-2-300x190.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>The application architecture is single page, with routes that determine records, forms as well as filters and search options. We use a library called &#8220;Aura&#8221;, which is template based JavaScript framework. The backend is stored in Salesforce, along with external modules such as ChartJS for the charts.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-7570" src="https://michaelsoriano.com/wp-content/uploads/2021/09/parrisk-cloc.png" alt="cloc parrisk" width="737" height="367" srcset="https://michaelsoriano.com/wp-content/uploads/2021/09/parrisk-cloc.png 737w, https://michaelsoriano.com/wp-content/uploads/2021/09/parrisk-cloc-300x149.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></p>
<p>&nbsp;</p>
<p>The project took a little over two months to build. Additions such as automated notifications, batch processing and scheduled jobs were implemented.</p>
<p>Overall, ParRisk was a huge success. It received a lot of recognition, along with many happy users using the tool on a daily basis.</p>
<p>The post <a href="https://michaelsoriano.com/work/parrisk/">ParRisk</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/parrisk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Alumni Portal</title>
		<link>https://michaelsoriano.com/work/alumni-portal/</link>
					<comments>https://michaelsoriano.com/work/alumni-portal/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Sat, 31 Aug 2019 16:21:56 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=6140</guid>

					<description><![CDATA[<p>The Alumni Portal is a place where former Parsons employees can keep up to date with what&#8217;s happening with the company. Alumni&#8217;s stay informed about recent events, projects, maybe event put in their two cents about something that they have knowledge about. It is designed for information and collaboration. Alumni Portal was definitely a worthwhile [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/alumni-portal/">Alumni Portal</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The Alumni Portal is a place where former Parsons employees can keep up to date with what&#8217;s happening with the company. Alumni&#8217;s stay informed about recent events, projects, maybe event put in their two cents about something that they have knowledge about.</p>
<p>It is designed for information and collaboration. Alumni Portal was definitely a worthwhile website to build.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6156" src="https://michaelsoriano.com/wp-content/uploads/2017/07/page-with-phone2.png" alt="" width="707" height="635" srcset="https://michaelsoriano.com/wp-content/uploads/2017/07/page-with-phone2.png 707w, https://michaelsoriano.com/wp-content/uploads/2017/07/page-with-phone2-300x269.png 300w" sizes="(max-width: 707px) 100vw, 707px" /></p>
<p>The site is complete with custom user registration, a commenting system, user profile and Workday news feed. The Alumni site has many components that makes it a pretty interesting site to visit.</p>
<h3>ReactJS and WordPress API</h3>
<p>We chose a very familiar backend &#8211; which is WordPress. This allows our users to add content and manage external users easily. WordPress also allows us to add functionality via plugins &#8211; which makes development a breeze. I had to write a custom API that imports our intranet news into WordPress automatically. This is so that users don&#8217;t even have to login to the site at all to keep the news fresh.</p>
<p><img decoding="async" class="alignnone size-full wp-image-7048" src="https://michaelsoriano.com/wp-content/uploads/2017/07/code-react-wp.png" alt="" width="591" height="466" srcset="https://michaelsoriano.com/wp-content/uploads/2017/07/code-react-wp.png 591w, https://michaelsoriano.com/wp-content/uploads/2017/07/code-react-wp-300x237.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<p>The Front End is using ReactJS.  This allows the site to load fast for good user experience. And with development build step, the site remains small and nimble. We stuck with Bootstrap for the CSS and Responsiveness of the pages. This was a familiar part for me. I&#8217;ve used Bootstrap for so long &#8211; that I can&#8217;t imagine building applications without it.</p>
<h3>Single Page App</h3>
<p>ReactJS makes the entire site a Single Page Application, interacting with the WordPress REST API, along with our custom ones written in NodeJS and PHP. Again, since everything is AJAX, the site is fast &#8211; which is good user experience.</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p>The commenting system is open for all users to enter the site. When you enter a comment, it automatically adds it in the page &#8211; without a refresh. You can also edit your own comment inline. This means that you are not stuck with a bad comment &#8211; you have a chance to change it on the spot.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6158" src="https://michaelsoriano.com/wp-content/uploads/2017/07/alumni3.png" alt="" width="696" height="755" srcset="https://michaelsoriano.com/wp-content/uploads/2017/07/alumni3.png 696w, https://michaelsoriano.com/wp-content/uploads/2017/07/alumni3-277x300.png 277w" sizes="(max-width: 696px) 100vw, 696px" /></p>
<p>A user profile section is also available. This is a big React Form &#8211; fetching and posting data to the user API.</p>
<h3>Workday and AWS Lambda</h3>
<p>Lastly, the homepage features a &#8220;job scroller&#8221;. The aim is for former employees to see what jobs are available, and possibly even return for a position.</p>
<p>The feed for this section comes from our recruiting system called Workday. Workday has a functionality called RaaS  &#8211; which generates a report by the recruiting agents. These reports are then exposed via an API in XML format.</p>
<p>I used AWS Lambda and wrote a small NodeJS script to fetch this data. This is mainly the endpoint PHP is using to expose to the front end.<br />
<img decoding="async" class="alignnone size-full wp-image-6159" src="https://michaelsoriano.com/wp-content/uploads/2017/07/alumni1.png" alt="" width="735" height="468" srcset="https://michaelsoriano.com/wp-content/uploads/2017/07/alumni1.png 735w, https://michaelsoriano.com/wp-content/uploads/2017/07/alumni1-300x191.png 300w" sizes="(max-width: 735px) 100vw, 735px" /><br />
Overall, Alumni Portal had taught me many things especially with new technologies like ReactJS, AWS Lambda and NodeJS.  But most importantly, it had taught me a lot about our company. The culture, people and development practices.</p>
<p>Note that this was already a rebuild &#8211; from the previous version that I also wrote &#8211; using BackboneJS and Sharepoint. The site launched is set to launch September 2019.</p>
<p>The post <a href="https://michaelsoriano.com/work/alumni-portal/">Alumni Portal</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/alumni-portal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NASA Images</title>
		<link>https://michaelsoriano.com/work/nasa-images/</link>
					<comments>https://michaelsoriano.com/work/nasa-images/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Fri, 07 Sep 2018 23:29:13 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=6759</guid>

					<description><![CDATA[<p>A recent project that I worked on is called NASA Images. NASA Images uses the NASA Open API as the back end. It is specifically built for searching images, that is (you guessed it), NASA related. It is simple, elegant and sleek. But most of all, I tried to make it as user friendly as [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/nasa-images/">NASA Images</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A recent project that I worked on is called NASA Images. NASA Images uses the NASA Open API as the back end. It is specifically built for searching images, that is (<em>you guessed it</em>), NASA related.</p>
<p>It is simple, elegant and sleek. But most of all, I tried to make it as user friendly as possible. Plenty of times I find myself browsing and just enjoying what NASA has in their archive.<br />
<a href="http://nasaimages.herokuapp.com">View Live Site</a></p>
<p><img decoding="async" class="alignnone size-full wp-image-6764" src="https://michaelsoriano.com/wp-content/uploads/2018/09/laptop-nasa-images.png" alt="nasa images" width="735" height="468" srcset="https://michaelsoriano.com/wp-content/uploads/2018/09/laptop-nasa-images.png 735w, https://michaelsoriano.com/wp-content/uploads/2018/09/laptop-nasa-images-300x191.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></p>
<p>I have set pre-built searches in the sidebar &#8211; not just for fast searching, but also so that I could use the &#8220;rockets&#8221;, &#8220;moon&#8221;, &#8220;earth&#8221; and &#8220;space shuttles&#8221; icons. I simply thought they look good.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-6765" src="https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-image1.png" alt="nasa images" width="850" height="478" srcset="https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-image1.png 850w, https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-image1-300x169.png 300w, https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-image1-768x432.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>Also in the sidebar, is an area reserved for the Filters. As soon as you search, the filters get filled up by the meta data of the search, namely: &#8220;By Center&#8221;, &#8220;By Photographer&#8221; and &#8220;By Keywords&#8221;.</p>
<p>Clicking on these filter links will refine your search results.</p>
<p>The site was built using NodeJS for the back-end proxy, and VueJS for the the front-end framework. I also used Axios for my HTTP calls for both front and back.</p>
<p>&nbsp;</p><div class="post-ad-insert">On a side note, I've really enjoyed the videos from Laracasts.com. These are high quality web developer tutorials on topics and technologies
	ranging from Laravel, React, Vue and many more. <a href="https://laracasts.com/referral/Michaelsoriano" rel="nofollow">Head over to Laracasts</a> and check them out! </div>
<p><img decoding="async" class="size-full wp-image-6761 aligncenter" src="https://michaelsoriano.com/wp-content/uploads/2018/08/code-node-vue.png" alt="code - nodejs + vuejs" width="591" height="466" srcset="https://michaelsoriano.com/wp-content/uploads/2018/08/code-node-vue.png 591w, https://michaelsoriano.com/wp-content/uploads/2018/08/code-node-vue-300x237.png 300w" sizes="(max-width: 591px) 100vw, 591px" /><br />
You will also notice that the page never reloads. This is because it&#8217;s a SPA (Single Page Application), with the benefit of speed and better user experience.</p>
<p>I don&#8217;t know if you&#8217;ve noticed, but the URL&#8217;s change &#8211; even though the page is technically never reloaded. This is called a page routing &#8211; which is made possible by VueRouter. So you can technically get to the search results, filtered results, single item detail &#8211; even by clicking back, forward or even refreshing the browser.</p>
<p>Also &#8211; you can send the said links via an email and it will still take you to the intended view.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6767" src="https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-images-skewed.png" alt="nasa images " width="650" height="499" srcset="https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-images-skewed.png 650w, https://michaelsoriano.com/wp-content/uploads/2018/09/nasa-images-skewed-300x230.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></p>
<p>The final thing you&#8217;ll notice is that the site is responsive. It&#8217;s intended to look good from a large desktop monitor &#8211; down to a small mobile device. I used Bootstrap framework to achieve this functionality.</p>
<p>I especially like the thumbnails on hover, where a subtle &#8220;zoom&#8221; is added. The sidebar also can be expanded and collapsed. Again, all of made possible with CSS and a bit of JavaScript.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-6762" src="https://michaelsoriano.com/wp-content/uploads/2018/09/iphone-nasa.png" alt="nasa images - iphone" width="668" height="623" srcset="https://michaelsoriano.com/wp-content/uploads/2018/09/iphone-nasa.png 668w, https://michaelsoriano.com/wp-content/uploads/2018/09/iphone-nasa-300x280.png 300w" sizes="(max-width: 668px) 100vw, 668px" /></p>
<p>So take <a href="http://nasaimages.herokuapp.com/">NASA Images</a> for a spin. Note that the site may take a bit of time on first load &#8211; this is because it&#8217;s sitting in a free account in Heroku and the &#8220;dynos&#8221; go to sleep with inactivity. And it takes a little bit of time to &#8220;wake up&#8221;.</p>
<p>The post <a href="https://michaelsoriano.com/work/nasa-images/">NASA Images</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/nasa-images/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Careers at Parsons</title>
		<link>https://michaelsoriano.com/work/careers-at-parsons/</link>
					<comments>https://michaelsoriano.com/work/careers-at-parsons/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Fri, 17 Nov 2017 17:08:32 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=6188</guid>

					<description><![CDATA[<p>Our journey to the open source world has begun! careers.parsons.com was built on technologies that was a first for many of us. Not to mention, this was a total re-do of the old &#8220;parsonsjobs.com&#8221; &#8211; which was run by our vendors. So Careers is now in our hands &#8211; pixels to code. I&#8217;ll explain further [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/careers-at-parsons/">Careers at Parsons</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Our journey to the open source world has begun! careers.parsons.com was built on technologies that was a first for many of us. Not to mention, this was a total re-do of the old &#8220;parsonsjobs.com&#8221; &#8211; which was run by our vendors. So Careers is now in our hands &#8211; pixels to code. I&#8217;ll explain further below.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6211 forceCenter" src="https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-1.png" alt="" width="850" height="567" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-1.png 850w, https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-1-300x200.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-1-768x512.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>The jobs are housed in Taleo, so we had to write to their API to show and sprinkle the jobs all over the site. This was not an easy task, and had to involve not only programming, but the talent people as well. The jobs themselves had to be in categorized in a way for our parser to grab.</p>
<p>The design was done by our Creative Department, which established the Parsons brand very well.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6213" src="https://michaelsoriano.com/wp-content/uploads/2017/11/home2.png" alt="" width="787" height="527" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/home2.png 787w, https://michaelsoriano.com/wp-content/uploads/2017/11/home2-300x201.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/home2-768x514.png 768w" sizes="(max-width: 787px) 100vw, 787px" /></p>
<p>As mentioned, this was our first open source project, so we&#8217;ve utilized technologies such as Git and Amazon&#8217;s CodeCommit for our repository, s3 for storage and CodeDeploy for deploying code to the servers.</p>
<p>The development workflow was a streamlined process. And I, being the lead developer &#8211; was very happy with the results.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6210" src="https://michaelsoriano.com/wp-content/uploads/2017/11/skewed-pages.png" alt="" width="650" height="499" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/skewed-pages.png 650w, https://michaelsoriano.com/wp-content/uploads/2017/11/skewed-pages-300x230.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></p>
<p>The front facing pages are built on WordPress, so the theme had to translate to our designs. On top of that, the pages were to be updated by Talent themselves. So custom fields, post formats and post types had to be easy enough for them to use.</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-6204" src="https://michaelsoriano.com/wp-content/uploads/2017/11/code.png" alt="" width="591" height="466" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/code.png 591w, https://michaelsoriano.com/wp-content/uploads/2017/11/code-300x237.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<p>The WordPress side was running on Bootstrap &#8211; so the pages render in mobile devices.  The custom fonts are brought in by typekit, so they had to be meticulously coded to be legible &#8211; in phones, tables and so forth.</p>
<p>The images are optimized, yet had to be coded in a way that they are the right sizes &#8211; again for different devices.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6212" src="https://michaelsoriano.com/wp-content/uploads/2017/11/iphone.png" alt="" width="668" height="623" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/iphone.png 668w, https://michaelsoriano.com/wp-content/uploads/2017/11/iphone-300x280.png 300w" sizes="(max-width: 668px) 100vw, 668px" /></p>
<p>The job listing and detail pages were still in Taleo &#8211; so we had to duplicate the header, footer and css for the site. This was not an easy task because the Taleo platform doesn&#8217;t allow JavaScript to be inserted, meaning &#8211; I had replicate the functionality by using only CSS.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6214" src="https://michaelsoriano.com/wp-content/uploads/2017/11/home.png" alt="" width="787" height="567" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/home.png 787w, https://michaelsoriano.com/wp-content/uploads/2017/11/home-300x216.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/home-768x553.png 768w" sizes="(max-width: 787px) 100vw, 787px" /></p>
<p>Finally, the project was a huge success &#8211; and it gave open source a good name to our company. Which paved the way for many more projects like this in the future.</p>
<p>The post <a href="https://michaelsoriano.com/work/careers-at-parsons/">Careers at Parsons</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/careers-at-parsons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VimiChat</title>
		<link>https://michaelsoriano.com/work/vimichat/</link>
					<comments>https://michaelsoriano.com/work/vimichat/#respond</comments>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Tue, 07 Nov 2017 17:13:00 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=6187</guid>

					<description><![CDATA[<p>The creators of VimiChat had approached me to design their public www website. Vimi is a &#8220;computer on phone&#8221; application that is designed to consolidate all of your files, programs and websites onto a single user interface: the VimiChat app. Simple and Clean What I especially liked about the Vimi project was I got to [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/vimichat/">VimiChat</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The creators of VimiChat had approached me to design their public www website. Vimi is a &#8220;computer on phone&#8221; application that is designed to consolidate all of your files, programs and websites onto a single user interface: the VimiChat app.</p>
<h3>Simple and Clean</h3>
<p>What I especially liked about the Vimi project was I got to design it. There are plenty of material online on creating app websites &#8211; which includes icons, phones and tablets. The Vimi people wanted the site simple and clean &#8211; so that&#8217;s what I intended on doing.</p>
<p><img decoding="async" class="alignnone force-center size-full wp-image-6208" src="https://michaelsoriano.com/wp-content/uploads/2017/11/icons.png" alt="" width="850" height="516" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/icons.png 850w, https://michaelsoriano.com/wp-content/uploads/2017/11/icons-300x182.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/icons-768x466.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>The screenshot above is a set of icons describing what the VimiChat application can do. This was featured right below the hero image in the homepage and was good match.</p>
<h3>Keeping the Brand</h3>
<p>Part of the challenge was to match the website with the actual Vimi app. The logo, typography as well as the colors &#8211; all were kept to provide that sense of brand. Below is an example of the application colors + icons &#8211; matching the colors and typography to the right.</p>
<p><img decoding="async" class="force-center alignnone size-full wp-image-6205" src="https://michaelsoriano.com/wp-content/uploads/2017/11/drag-drop-done.png" alt="" width="850" height="472" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/drag-drop-done.png 850w, https://michaelsoriano.com/wp-content/uploads/2017/11/drag-drop-done-300x167.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/drag-drop-done-768x426.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>Brand is important to the Vimi team, so I made sure the experience of the website was holistic and complements the brand.</p>
<h3>WordPress Please.</h3>
<p>The Vimi team specifically asked for WordPress because of it&#8217;s simplicity and ease of use. On top of that &#8211; WordPress powers about 25 percent of the world&#8217;s websites &#8211; so it&#8217;s easy to get support at time of need.</p>
<p>I have plenty of PHP and WordPress experience &#8211; so of course, I did this part as well.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6204" src="https://michaelsoriano.com/wp-content/uploads/2017/11/code.png" alt="" width="591" height="466" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/code.png 591w, https://michaelsoriano.com/wp-content/uploads/2017/11/code-300x237.png 300w" sizes="(max-width: 591px) 100vw, 591px" /><br />
The best thing about designing and coding &#8211; is I feel that I built that whole thing. From &#8220;<em>soup to nuts</em>&#8221; &#8211; Photoshop and my code editor was open together the entire time. Switching from design to code made things fast and enjoyable.</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p>Below shows the ideal &#8220;sidebar&#8221; template for the internal pages. A &#8220;Search&#8221; form that still adheres to the color palette of the site.</p>
<p><img decoding="async" class="force-center alignnone size-full wp-image-6206" src="https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar.png" alt="" width="850" height="650" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar.png 850w, https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-300x229.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/sidebar-768x587.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>Note the titles, links, headers and navigation also matched the company brand.</p>
<p>The Vimi folks also wanted to start their &#8220;blog&#8221;. This was not a problem with WordPress. As you may already know, WordPress IS a blog. Developers such as myself &#8211; just figured out ways to make it into a CMS. With the right skills &#8211; WordPress will do the job, and do it well.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-6209" src="https://michaelsoriano.com/wp-content/uploads/2017/11/hero.png" alt="" width="850" height="567" srcset="https://michaelsoriano.com/wp-content/uploads/2017/11/hero.png 850w, https://michaelsoriano.com/wp-content/uploads/2017/11/hero-300x200.png 300w, https://michaelsoriano.com/wp-content/uploads/2017/11/hero-768x512.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<p>&nbsp;</p>
<p>Finally, the hero section above is for the homepage. Notice that the site is centered around the Vimi app &#8211; with call to actions to the downloads in Google or Mac store. In addition, the site is fully responsive. So the site is fully accessible in different resolutions &#8211; desktops, tablets and mobile devices.</p>
<p>The post <a href="https://michaelsoriano.com/work/vimichat/">VimiChat</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://michaelsoriano.com/work/vimichat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PennDOT Safety</title>
		<link>https://michaelsoriano.com/work/penndot-safety/</link>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Tue, 21 Feb 2017 00:01:15 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=6028</guid>

					<description><![CDATA[<p>One of the first projects I had to work for Parsons is the PennDOT website. PennDOT stands for  Pennsylvania Department of Transportation. They have partnered with us to create a better system for users to take their Mechanic re-certification. The system had to be good looking, easy to use, modern and mobile ready. Our in-house [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/penndot-safety/">PennDOT Safety</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>One of the first projects I had to work for Parsons is the PennDOT website. PennDOT stands for  Pennsylvania Department of Transportation. They have partnered with us to create a better system for users to take their Mechanic re-certification. The system had to be good looking, easy to use, modern and mobile ready.</p>
<p>Our in-house designers had done a good job in the wire frames as well as the mock-ups. The pages were sleek, modern and most importantly &#8211; adhered to the client&#8217;s branding. It was then up to me to convert them into modular templates. It also had to be HTML5 and CSS3 compliant. And for the first time for the site owners, the application had to be usable in tablets and phones.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-6086" src="https://michaelsoriano.com/wp-content/uploads/2017/02/pendot-responsive.jpg" alt="" width="735" height="468" srcset="https://michaelsoriano.com/wp-content/uploads/2017/02/pendot-responsive.jpg 735w, https://michaelsoriano.com/wp-content/uploads/2017/02/pendot-responsive-300x191.jpg 300w" sizes="(max-width: 735px) 100vw, 735px" /></p>
<p>&nbsp;</p>
<p>The challenge was, as the design kept evolving, the static HTML files wasn&#8217;t going to cut it. I had to think of something to streamline the process.</p>
<h3>Static Page Generator</h3>
<p>My solution was to build a static file generator. One that will allow me to &#8220;template-ize&#8221; the common files such as the header, navigation and footer.</p>
<p>I had built a local application, that is somewhat of a static file generator in PHP.  I had modeled it closely to how WordPress templates work.</p><div class="post-ad-insert">On a side note, I've really enjoyed the videos from Laracasts.com. These are high quality web developer tutorials on topics and technologies
	ranging from Laravel, React, Vue and many more. <a href="https://laracasts.com/referral/Michaelsoriano" rel="nofollow">Head over to Laracasts</a> and check them out! </div>
<p><img decoding="async" class="alignnone size-full wp-image-6084" src="https://michaelsoriano.com/wp-content/uploads/2017/02/code-php.png" alt="" width="591" height="466" srcset="https://michaelsoriano.com/wp-content/uploads/2017/02/code-php.png 591w, https://michaelsoriano.com/wp-content/uploads/2017/02/code-php-300x237.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<p>The program was simple. I view and edit the files in PHP. And if all looks good, I load another file called &#8220;generate.php&#8221; that will look through all my files and create an HTML version of it. And since there were close to a hundred pages, I also had to zip the files, ready for delivery.</p>
<p>The output was an easy to maintain system regardless of the number of change. The templates can be re-used with any content, making it a true static file generator program.</p>
<p><img decoding="async" class="alignnone size-full wp-image-6085" src="https://michaelsoriano.com/wp-content/uploads/2017/02/skewed-pendott.jpg" alt="" width="650" height="598" srcset="https://michaelsoriano.com/wp-content/uploads/2017/02/skewed-pendott.jpg 650w, https://michaelsoriano.com/wp-content/uploads/2017/02/skewed-pendott-300x276.jpg 300w" sizes="(max-width: 650px) 100vw, 650px" /></p>
<p>The entire process took about a couple of months. I had learned a lot especially the inner workings of how our internal processes work. The programming however, is pretty basic &#8211; but I still had exercised what I know to produce something worthwhile.</p>
<p>Our client was extremely happy with the pages. I also was able to reuse my program with another similar project.</p>
<p>The post <a href="https://michaelsoriano.com/work/penndot-safety/">PennDOT Safety</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Project Tracker</title>
		<link>https://michaelsoriano.com/work/project-tracker/</link>
		
		<dc:creator><![CDATA[Michael Soriano]]></dc:creator>
		<pubDate>Mon, 20 Feb 2017 18:38:22 +0000</pubDate>
				<guid isPermaLink="false">http://michaelsoriano.com/?post_type=work&#038;p=5840</guid>

					<description><![CDATA[<p>I had the challenge of building a SharePoint application for one of our Departments in Parsons. The goal was to have a project tracking system, where each entry can be sub-tasked, assigned and managed all within our intranet system.  And since our intranet was running SharePoint, which has a REST API &#8211; I had to [&#8230;]</p>
<p>The post <a href="https://michaelsoriano.com/work/project-tracker/">Project Tracker</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I had the challenge of building a SharePoint application for one of our Departments in Parsons. The goal was to have a project tracking system, where each entry can be sub-tasked, assigned and managed all within our intranet system.  And since our intranet was running SharePoint, which has a REST API &#8211; I had to write all the front end code from scratch.</p>
<h3>A Single Page Application</h3>
<p>I chose the &#8220;Single Page Application&#8221; (SPA) approach since all of the code will be front end. It is an intranet, so no SEO value is required. Basically, the entire application is driven by JavaScript and CSS. In addition, an SPA Means that there will be no page refresh, no traditional &#8220;POST&#8221; form submissions. All transactions to the server is via AJAX &#8211; making the application fast and responsive. Ultimately just a better user experience overall.</p>
<p>Below demonstrates the entire life cycle of updating and creating a project:</p>
<p><img decoding="async" class="alignnone size-full wp-image-5843" src="https://michaelsoriano.com/wp-content/uploads/2016/06/projects-list.gif" alt="projects-list" width="801" height="421" /><br />
Adding a project stays within the page, as well as filtering, sorting and paging are all done dynamically. A &#8220;<em>quick update</em>&#8221; feature is also available where users can update the project status and type inline. The design is mostly using our existing Brand-enforced CSS styles.</p>
<p><img decoding="async" class="alignnone size-full wp-image-5845" src="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-item.jpg" alt="proj-list-item" width="825" height="520" srcset="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-item.jpg 825w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-item-300x189.jpg 300w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-item-768x484.jpg 768w" sizes="(max-width: 825px) 100vw, 825px" /></p>
<h3>REST API Backend</h3>
<p>This was one of my first exposure to SharePoint&#8217;s REST, so I had to learn as I build. SharePoint is Microsoft&#8217;s Content Management System as well as application framework where you can interact with users, content, workflows and it works seamlessly with existing programs.</p>
<p>I was able to built the basic SPA, which was using the basic CRUD utilities of the REST API. Also, all data was stored in SharePoint lists &#8211; which are utilities inside SharePoint where users can further interact with the data such as exporting to Excel and run reports.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="force-center alignnone size-full wp-image-5841" src="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-detail.jpg" alt="proj-detail" width="823" height="650" srcset="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-detail.jpg 823w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-detail-300x237.jpg 300w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-detail-768x607.jpg 768w" sizes="(max-width: 823px) 100vw, 823px" /></p>
<p>&nbsp;</p>
<p>Completing the application took approximately two months, with the help of plugins and libraries such as jQuery for DOM manipulation, Backbone.js for MVC code structure, Underscore.js for templating.</p>
<p>&nbsp;</p><div class="post-ad-insert">On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created
	by and for the world's top talent. <a href="https://app.usebraintrust.com/r/michael2389/" rel="nofollow" target="_blank">Head over to Braintrust</a> and signup today!</div>
<p><img decoding="async" class="alignnone size-full wp-image-5842" src="https://michaelsoriano.com/wp-content/uploads/2016/06/projects-detail.gif" alt="projects-detail" width="652" height="500" /></p>
<p>&nbsp;</p>
<p>We didn&#8217;t use a generic library for form elements such as auto suggest and file uploaders. Instead, we implement our own and made them plugins. One of the most challenging input elements was the datepicker &#8211; which we used jQuery Date.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-5846" src="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-new.jpg" alt="proj-list-new" width="731" height="418" srcset="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-new.jpg 731w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-list-new-300x172.jpg 300w" sizes="(max-width: 731px) 100vw, 731px" /></p>
<p>&nbsp;</p>
<p>Finally, since our intranet is already running Bootstrap, the application looks good on a mobile device. This wasn&#8217;t in the original requirements, but the client was really happy that they can manage their data in their phones.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="alignnone size-full wp-image-5848" src="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-mobile.jpg" alt="proj-mobile" width="527" height="623" srcset="https://michaelsoriano.com/wp-content/uploads/2016/06/proj-mobile.jpg 527w, https://michaelsoriano.com/wp-content/uploads/2016/06/proj-mobile-254x300.jpg 254w" sizes="(max-width: 527px) 100vw, 527px" /></p>
<p>&nbsp;</p>
<p>The Project Tracker App was one of my most favorite projects to build. I gained valuable knowledge with JavaScript, REST, Backbone.js and Underscore.js. Most of all, it was an application that I am truly proud of building.</p>
<p>The post <a href="https://michaelsoriano.com/work/project-tracker/">Project Tracker</a> appeared first on <a href="https://michaelsoriano.com">Michael Soriano</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
