Following our recent efforts to showcase the incredible talent at ECI, I sat down with Leon Casaubon who is arguably one of our most important members at Estrada Consulting Inc.
Leon was kind enough to give me 30 minutes of his time to explain how he got to where he was. He started out in an area that does not directly relate to Software Development or Project Management; as a pilot in the United States Air Force (USAF), where he was initially an instructor pilot and went on to other flying jobs with a total of over 3000 flight hours in the USAF. While in the USAF, his additional duties were often related to Software Development, Financial Management, as well as Aircraft Maintenance and Overhaul. His service totaled just over 21 years.
Leon is a major proponent of software dating back to the 70s when the use of software was not widely accepted in the military, “It was easy to say bad things about software back then” he tells me, continuing on how it was hard to convince some people to get onboard with it; “there was a mistrust going around when it came to its usage; people gained appreciation for the technology only after its uses were demonstrated to them”, he explains, “it had to be shown to them how technology could be centered and used around specific tasks”.
Leon is known by the people he works with as precise, reliable and efficient in the way he implements and develops the project around the clients. He tells me that a lot of those skills got polished from the time he was developing software with the Air Force. “You don’t want to be in the air when the software is failing” he says. Part of his work was development, but another major part was testing them in real life scenarios; even in testing in those conditions, un-reliability of the software could be detrimental to the entire operation.
After spending 21 years in the Air Force, five years with a major systems integrator, a couple of years in the Dot Com boom, and almost 15 years with a local solutions company focused on the State of California, he eventually came to us at ECI in the spring of 2017.
Leon brings an incredible amount of experience; at ECI he has been developing software for federal and state organizations for over 40 years, most recently with the Department of Health Care Services. He notes the difference in approach to work that is prevalent at ECI, which grants more autonomy and security to members of the teams. Companies that micromanage slow down work and create problems in team functionality.
Leon enjoys developing software, seeing the systems implemented and being used to improve business operations is always a great experience. He doesn’t have a favorite project, but he says his favorites are ones that offer the most benefit to the people who use them.
An important part of the work Leon is doing is Agile Project Management, the benefits of developing and implementing in real time, gauging and receiving immediate feedback allows for a more comprehensive development, allowing for the client to get the maximum amount of work out of the software they pay for.
As project management goes, he dives a bit in the technical politics of it all, he does not believe in the common narrative of Agile versus Waterfall in the Project Management profession. They both have their pros and cons. Waterfall has adapted a lot in recent years to become more agile, and agile has adapted more recently to develop greater architecture and large project methods.
He tells me that it’s important to stay away from the hype of new methods and ask what they can actually accomplish, the easiest, safest and most efficient way to complete a project is what vendors should look for when strategizing for projects. In this business, it’s not about buying shiny new objects all the time, its more about the value that comes from developing a strong solution.
Finally as our talk comes to a close he offers some advice to prospective individuals entering the industry, “get good at one thing before you move on to the next, it’s more important to provide a perfect service in one area than to have a variety of half perfect skills, this way the value of your work grows.”
I recently sat down with one of Estrada Consulting’s senior Microsoft .Net developers, Reena Dubey to ask her what her experience has been like working with the Estrada Consulting team.
Reena has a master’s degree in Computer Applications from India, as well as a Diploma in Project Management from the University of California Berkeley. Prior to ECI she worked with a company in the East Coast, but she was looking for a company that was local and easier to communicate with; in 2011 her friend recommended ECI; upon meeting with the CEO she decided to join the ECI family and has been a fundamental part of it since.
Reena is one of the most talented Software Developers operating in the industry today, she has an incredible background of experience working with Government organizations across the continental United States. She has been praised by her co-workers and ECI customers as one of the easiest to work with. Though she was not always destined to go down this path. She mentioned during our interview that she did not even think about Computer Sciences as a future career path until she took a single course in CS. After taking that course, she quickly realized how much she enjoyed enjoys implementing software solutions and the logical structure of software development.
Reena has experience in many different areas of software development. She started developing applications using client-based development tools such as Visual Basic and MS Access, and has more recently transitioned to the Microsoft .NET client-server development framework. This transition has made her incredibly efficient when migrating legacy systems to more modern platforms.
Although Reena has fond memories of learning to develop using client-based tools, she prefers modern technology platforms. She enjoys how one can more easily develop new components and release applications more quickly utilizing the .Net development framework.
Reena has worked with a variety of different public departments. Upon joining ECI, her first project was with the Department of Victim Compensation of California, and is now working with the Department of Health Care Services (DHCS).
When asked about her projects, Reena stated “I have no favorites, but I do prefer having a lot of creative freedom in my work.” The DHCS project has required a monumental effort from her and the ECI team. She works with a team of three developers, who have been able to build an entire system from the ground up. While challenging she says that the experience has been very enjoyable, and finds the employees of DHCS delightful. She has always been happy to see new people join the Estrada Consulting team. Her advice for new employees is to be open to learning and taking on new challenges, because the organization provides many opportunities to learn and grow. As the interview came to a close, Reena stated “Estrada Consulting looks out for the project team. It does what they promise and offers continuous support and communication. I would recommend Estrada Consulting to anyone”.
There are two supported implementations for building server-side applications with .NET: .NET Framework and .NET Core. Both share many of the same components and you can share code across the two. However, there are fundamental differences between the two and your choice depends on what you want to accomplish.
Use .NET Core for your server application when: • You have cross-platform needs. • You are targeting microservices. • You are using Docker containers. • You need high-performance and scalable systems. • You need side-by-side .NET versions per application.
Use .NET Framework for your server application when: • Your app currently uses .NET Framework (recommendation is to extend instead of migrating). • Your app uses third-party .NET libraries or NuGet packages not available for .NET Core. • Your app uses .NET technologies that aren’t available for .NET Core. • Your app uses a platform that doesn’t support .NET Core.
Top reasons to choose .NET Core
Cross-platform Needs If your application needs to run on multiple platforms like Windows, Linux, and macOS, use .NET Core; it supports the previously mentioned operating systems as your development workstation. Visual Studio provides an Integrated Development Environment (IDE) for Windows and macOS. You can also use Visual Studio Code, which runs on macOS, Linux, and Windows. Visual Studio Code supports .NET Core, including IntelliSense and debugging. Most third-party editors, such as Sublime, Emacs, and VI, work with .NET Core. These third-party editors get editor IntelliSense using Omnisharp. You can also avoid any code editor and directly use the .NET Core CLI tools, available for all supported platforms.
Need for High-performance and Scalable systems When your system needs the best possible performance and scalability, .NET Core and ASP.NET Core are your best options. High-performance server runtime for Windows Server and Linux makes .NET a top performing web framework on TechEmpower benchmarks.Performance and scalability are especially relevant for microservices architectures, where hundreds of microservices may be running. With ASP.NET Core, systems run with a much lower number of servers/Virtual Machines (VM). The reduced servers/VMs save costs in infrastructure and hosting.
Microservices Architecture Micro services architecture allows a mix of technologies across a service boundary. This technology mix enables a gradual embrace of .NET Core for new microservices that work with other microservices or services. For example, you can mix microservices or services developed with .NET Framework, Java, Ruby, or other monolithic technologies Need for side by side of .NET versions per application level To install applications with dependencies on different versions of .NET, we recommend .NET Core. .NET Core offers side-by-side installation of different versions of the .NET Core runtime on the same machine. This side-by-side installation allows multiple services on the same server, each of them on its own version of .NET Core. It also lowers risks and saves money in application upgrades and IT operations.
Need to use .NET Technologies Not Available for .NET Core Some .NET Framework technologies aren’t available in .NET Core. Some of them might be available in later .NET Core releases. Others don’t apply to the new application patterns targeted by .NET Core and may never be available.
The following list shows the most common technologies not found in .NET Core:
ASP.NET Web Forms applications: • ASP.NET Web Forms are only available in the .NET Framework. • ASP.NET Core cannot be used for ASP.NET Web Forms. • There are no plans to bring ASP.NET Web Forms to .NET Core.
ASP.NET Web Pages applications: • ASP.NET Web Pages aren’t included in ASP.NET Core.
WCF services implementation: Even when there’s a WCF-Client library to consume WCF services from .NET Core, WCF server implementation is currently only available in the .NET Framework. This scenario is not part of the current plan for .NET Core but it’s being considered for the future.
Workflow-related services: Windows Workflow Foundation (WF), Workflow Services (WCF + WF in a single service) and WCF Data Services (formerly known as “ADO.NET Data Services”) are only available in the .NET Framework. There are no plans to bring WF/WCF+WF/WCF Data Services to .NET Core.
Language support: Visual Basic and C# are currently supported in .NET Core, but not for all project types. For a list of supported project templates, see Template options for dot net new.
In addition to the official roadmap, there are other frameworks to be ported to .NET Core. For a full list, see the CoreFX issues marked as port-to-core. This list doesn’t represent a commitment from Microsoft to bring those components to .NET Core. They’re simply capturing the desire from the community to do so. If you care about any of the components marked as port-to-core, participate in the discussions on GitHub. And if you think something is missing, file a new issue in the CoreFX repository (Some References are taken from MSDN).
ASP.NET Core with EF Core and RESTful API ASP.NET Core is an open source, cross-platform framework for building modern internet connected applications, and ASP.NET Core MVC is a middleware which provides a framework for building the APIs and web application using MVC pattern. (Click here to learn more about ASP.NET Core)
Create an ASP.NET CORE application Open Visual Studio, File -> New ->Project, select ASP.NET Core web application template and click OK
Choose an API template as shown below
By clicking on OK, it will create a new ASP.NET Core project with some pre-defined configuration files and controller.
The program.cs class which contains the main method with a method called Createwebhostbuilder(), is responsible for running and configuring the application. The host for the application is set up with the startup type as startup class.
The startup.cs class contains two important methods:
ConfigureServices() – it is used to add service to build dependency injection containers and configure those services, Configure() – it is used to configure how the ASP.NET Core application will response to an individual HTTP request.
Configure the Entity Framework Core
Create a folder called Entities to organize the entity model classes. Let’s create an entity model class.
Creating a Context File
Let’s create a context file, add a new class file, and name it as LibraryContext.cs.
Define the database connection in appsettings.json file and let’s register our context in Startup.cs.
Generate Database from Code-first Approach Run the following command in the Package Manager console. -Add-Migration MyCoreAPIDemo.Entities.LibraryContext
This will create a class for migration. Run the following command to update the database. -Update-database
This will update the database based on our models.
Adding Data Let’s add some data to the Author table. For this, we need to override a method OnModelCreating in the LibraryContext class.
Let’s run the migration and update command once again.
Creating a Repository Let’s add a repository folder to implement the repository pattern to access the context method.
Create two more folders – Contract and Implementation – under the repository folder.
Create an interface ILibraryRepository.cs under Contract folder.
Let’s create a class under implementation folder to implement the function.
The above method GetAllAuthor() will return the complete list of records from Author table.
Let’s configure the repository using dependency injection. Open Startup.cs file, add the below code in Configuration Services method.
Create API Controller
Right-click on controller and go to Add->Controller. Choose an empty API template and name the controller. I named the controller as LibrariesController.
We have created a WEB API with an endpoint api/Libraries/GetAllAuthor to get an author list from the database.
Let’s test the API using Postman tool.
We got an author list as a response.
CREATE using Entity Framework with ASP.Net Core
Open the LibraryRepository.cs file from the application and write the below code.
_libraryContext is our database context, the Add method is used to add the records in the entity, and the SaveChanges method is used to save the changes in the database.
Open LibrariesController.cs file from the application and write this code.
The AddAuthor action will fetch the data from the body of request. Once the modelstate is validated, the data will be added to the database by calling the PostAuthor method in repository.
WEB API 2 is a framework for building HTTP services that can be accessed from any client including browsers and mobile devices. It is an ideal platform for building RESTful applications on the .NET Framework.
HTTP is not just for serving up web pages. HTTP is also a powerful platform for building APIs that expose services and data. HTTP is simple, flexible, and ubiquitous. Almost any platform that you can think of has an HTTP library, so HTTP services can reach a broad range of clients, including browsers, mobile devices, and traditional desktop applications. ASP.NET Web API is a framework for building web APIs on top of the .NET Framework. The following are the return types for Web API action methods.
Software Development can be a long and costly process which can be extremely risky at times. Many companies have tried to combat the risks associated with developing software that does not function in a way that is intended or is unable to properly execute all of its tasks.
One of the major ways to combat these issues is using Low Code Platforms, which have gained a lot in popularity. These platforms are designed for people with different backgrounds and levels of expertise to be able to build functional platforms for their organizations.
While developed software is usually easier to use and can be catered perfectly to the specific operations of the organization, they are notoriously hard to maintain in house. These software’s usually require regular maintenance, upgrading and constant oversight to operate at full capacity, this creates cost and worry for the sources of such software.
On the other hand, Low Code software are very hard to cater specifically to an organization’s specific needs and often impossible to add on, migrate or change. This has driven many experienced software developers away from these platforms.
Big Technology companies have not been a stranger to these issues; organizations like Out Systems have revolutionized the way Low Code platforms work by allowing them to have flexibility in their build and properly managing their data. However, Low Code platforms still have a way to go before they are fully accepted as a viable solution for Enterprise Software Development.Read More An Introduction to Low-Code Development Platforms