namespace NetShilla
{
public class StevesResume
{
public ResumeBuilder.Candidate GetBestCandidateResume()
{
var bestCandidate = new ResumeBuilder.Candidate();
bestCandidate.Name = "Steven Aziz";
bestCandidate.Technologies = new List();
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Binary System/Binary Operations/Logic Gates/Assembly/Microcontrollers/Low Level Programming",
SkillLevel = ResumeBuilder.RatingScale.BelowAverage,
Notes = "I was introduced to hardware basics in college. I learned all about Binary Systems/Operations and Logic Gates. This opened up a whole new world to me. It was fascinating to learn how a binary system of zeros and ones could create Logic Gates, and evolve into what we know today as computers! The evolution of the use of binary systems went on to create Logic Gates which could store data, but not persistently (Once power is removed/lost, the Logic Gates would reset their state, they were volatile). This led to EEPROM’s, which were non-volatile. This then spiraled into the workings and programming of microcontrollers using Assembly language, and C."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "VHDL/Verilog/FPGA/Xilinx",
SkillLevel = ResumeBuilder.RatingScale.BelowAverage,
Notes = "I was introduced to Hardware Description Language in college. After learning about the Assembly language, I was able to start designing a computer within an FPGA board using Verilog as the HDL. I’ve built an Arithmetic and Logic Unit (ALU) (using a Finite State Machine approach), which would serve as a CPU. I then extended this ALU to control different memory modules such as ROM and RAM. This allowed me to put most of my abstract knowledge about programming fundamentals into concrete knowledge. I was able to implement a lot of what I learned into a real working computer. Terms like \"FIFO\", and \"Buffer\" became second nature to me."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Java",
SkillLevel = ResumeBuilder.RatingScale.Low,
Notes = "I was introduced to the Java programming language in college. I've used both the Eclipse and the NetBeans IDE with JDK 6. Programming syntax is similar to the other languages which I have learned, but I have not used Java enough (nor have I explored the JDK and various libraries which are readily available) to consider myself above a \"Low\" SkillLevel.Now that the bad news is out of the way… The good news is that with my strong knowledge in other programming languages, and my ability to apply that knowledge across different languages; I’m sure that I would be able to excel with this language, just as any other."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "C++",
SkillLevel = ResumeBuilder.RatingScale.AboveAverage,
Notes = "I was introduced to C++ in college, but I didn’t really utilize its potential until I got my first programming job. I was tasked with adding features, and debugging a project with over 12 million lines of code! I was working for Second Opinion Telemedicine Solutions Inc. using Borland C++ Builder 5.0.2, on a product called \"Second Opinion Professional\" (SOP is a product which manages patient information for hospitals and clinics. Its main focus is Telemedicine, and Store-And-Foreword technology.) This taught me a lot about the language and gave me a firm grasp of memory management and mid-level programming language."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "C#",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "C# is currently part of my every day development cycle. I manage many projects written in C#: from desktop applications, mobile phone applications (iOS, and Android), and web applications. I’ve developed a multitude of products in the C# Language. To name just a few (without too much detail): I have designed and implemented webservices, and Restful API’s. I have developed multiple mobile app’s, one of which enables a patient/nurse/doctor to login with their specific roles, and perform actions against a web application (which I’ve developed: Second Opinion Enterprise (SOE), which is the successor to SOP), actions include creating referrals, capturing/uploading images/videos amongst others. I have created integrations for SOE with EMR’s, Zimbra Servers, Dicom Servers, video conferencing, amongst others. I have also created scheduling, billing, and reporting modules for SOE. Another interesting project which I will mention is a telehealth monitoring system; This has 3 parts to it. First is the monitoring dashboard which is an application for nurses/doctors to monitor patients remotely with video conferencing, stethoscopes, and EKG’s. The second part of this system, is the home kit which the patient takes home; the kit is contained in a pelican case, and it includes all the hardware necessary to collect and transmit data (the transmission of the data was challenging(but successful), because there was a specific hospital who wanted these units to perform well and transmit real-time data, and replicate the data to as many users who were monitoring, all while connected through a dialup. The third part of this system, is the communication server, which is essentially setup on a live server listening to TCP and UDP ports, to direct the traffic."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "JavaScript",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "I started using JavaScript when I began to create high‐end web applications. This introduced me to AJAX techniques and eventually jQuery. I learned about JavaScript, when I started investigating alternatives to the server postback (which is a big performance hit, since all the data has to be refreshed, and the whole page has to be re-downloaded. Not only is it an unnecessary performance hit, but it also lacks friendliness, and ease of use for the end user). JavaScript gave me the ability to create friendly and responsive web applications through DOM manipulation and AJAX"
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "jQuery",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "This library makes JavaScript and life so much easier. It’s great!"
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Visual Basic",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "Visual Basic is one of the first programming languages in which I have learned. I started with Visual Basic 6.0 back in 1999. I have also used this language to debug and add features to some of SOP’s plugins. For instance, a media manager (which connects to various capture devices amongst other features), an archive manager, various custom forms, and a report designer/generator. I’ve also developed MS Excel macros with VB6, one of which was to calculate complex statistical data."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = ".NET Framework",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "When Visual Basic .NET was released; I graduated from Visual Basic 6.0 and began my career with the .NET framework. This eventually led me into C#. I have developed many applications with VB.Net including: a vitals manager, an import/export manager for SOP, and an FTP Send feature with notifications for SOP"
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "MSSQL/MySQL/Entity Framework/SQLite/LINQ/ODBC/ADO.NET/Visual Fox Pro",
SkillLevel = ResumeBuilder.RatingScale.AboveAverage,
Notes = "I started database programming when I was introduced to ADO.NET, and ODBC drivers. Visual FoxPro was my first database engine using xBase databases and ODBC drivers. I went from Visual FoxPro to MySQL and MSSQL. The structured ADO.NET made interfacing with databases easier, but it did come with its drawbacks in speed. When architecting an application, I always weigh the drawbacks and the benefits of a certain technology before making a decision. In the middle of 2012 I started a project which communicated to a database (either MySQL/MSSQL) using the Entity Framework. Again, Entity Framework comes with its drawbacks, but because of the scale of the web app and the management which was going to take place (upgrading different deployments from different versions at different times on customer servers), Entity Framework was the clear choice (especially with its ability to allow interacting with the data through objects)."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "PHP",
SkillLevel = ResumeBuilder.RatingScale.Low,
Notes = "I have only programmed in PHP when I was tasked to customize and integrate an open source project called OpenEMR. The requirement for this project was to create a communication protocol between the two applications, so that when either handles patient data, it will pass the data to the other so that it can also handle the data. This avoided the need for double entry, and allowed each product to focus on their own individual strengths. I designed and implemented a RESTful API (with OAuth2), which handled communicating patient data between different web applications."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "HTML/XML/XAML/SOAP/AJAX/CSS/JSON",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "I have been developing applications as a career since 2009. With the desire for knowledge in all things relating to computers, I have acquired many skills, too much to list, which enables me to create incredible products."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "BASIC",
SkillLevel = ResumeBuilder.RatingScale.High,
Notes = "Although not relevant in today’s world, I must give credit where credit is due. BASIC was the first programming language I learned."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Ubuntu 12.04 ~ Ubuntu 18.04",
SkillLevel = ResumeBuilder.RatingScale.Average,
Notes = "I have had little experience with Linux before having to deploy a VMWare Zimbra Server. A couple of years after that, I deployed an OpenVPN Server, which required me to implement an apache server."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Windows Server 2003 ~ Windows Server 2016",
SkillLevel = ResumeBuilder.RatingScale.AboveAverage,
Notes = "Windows Server 2003 was the first server operating system which I was tasked to deploy and manage. This taught me all about Networking, DNS, IP, RAS, Active Directory, SSL, Redundancy, Backup's, Mail Servers, Domain Controllers, IIS, HyperV, Group Policy, Firewalls (especially Cisco IOS; it’s not part of Server 2003, but I thought I’d throw it into the mix since this is the stage in which I learned, designed, and deployed a whole network infrastructure) etc... With every new Server OS release, I get a little more feature, and a little more knowledge. For instance, from Server 2003 to Server 2008, I was able to learn and deploy HyperV machines. Between 2008 and 2012, I was able to implement SignalR in my IIS hosted web applications and take advantage of the new WebSocket protocol which allowed two-way communication between the webserver and client, rather than just the limited one-directional communication."
});
bestCandidate.Technologies.Add(new ResumeBuilder.Technology
{
Name = "Windows Server 2008",
SkillLevel = ResumeBuilder.RatingScale.AboveAverage,
Notes = "This is where my Windows Server skills really exploded. This is where I not only had to manage the system, but this is where I deployed an entire network from scratch. I've deployed (and migrated data for) many server applications which include but are not limited to: Microsoft Exchange Server, Microsoft SharePoint Serve, Microsoft CRM Server, Microsoft Team Foundation Server, Microsoft SQL Server, Microsoft HyperV Server, etc.."
});
bestCandidate.AdditionalInfo = "I have been an avid computer user since I acquired my first computer in 1998. This computer was running Windows 3.11. In my attempt to learn how the system worked, I rendered it un‐bootable with a system error reading: \"Himem system is missing or corrupt\". I then spent days reading DOS books in an attempt to mend my mistake. Finally, I was a proficient computer user. I was able to repair the system. A few months later I was able to acquire a new computer running Windows 98. Yet again, I rendered the system un‐bootable, in the first day of use (mind you, I was only about 15 years old, with only a few months of self-taught computer use). This time I was able to repair the system on the same day. I was so proud of myself that I just wanted to learn everything there is to know about computers. I went on the internet (which is in itself an amazing and feature rich technology) and started reading programming tutorials on BASIC. My ambition for technology has never dulled. I am continually striving to gain more and more knowledge, so that I can implement applications to simply make life easier.";
return bestCandidate;
}
}
public class ResumeBuilder
{
public class Candidate
{
public string Name { get; set; }
public Contact ContactInfo { get; set; }
public List Technologies { get; set; }
public string AdditionalInfo { get; set; }
}
public class Contact
{
public string PhoneNumber { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
public class Technology
{
public string Name { get; set; }
public RatingScale SkillLevel { get; set; }
public string Notes { get; set; }
}
public enum RatingScale
{
High = 10,
AboveAverage = 8,
Average = 5,
BelowAverage = 3,
Low = 1
}
}
}