Showing posts with label Software Development. Show all posts
Showing posts with label Software Development. Show all posts

Tuesday, 10 October 2017

Learned Lessons – Developing a MVC 9V2.0 Full Stack ASP.NET Application called MulderbertPX

A full stack experience from being on the team at College for V1.0 and then doing V2.0 as a solo developer! 



So, yesterday I was a very satisfied Software Developer for finishing the development and launching MulderbertPX, the V2.0 release of the full stack ASP.NET application. This release brings it to the next stage of its development as a project. You may have seen this trailer for yesterday’s application launch on Github and Azure, which was going around Social Media sites.



The application’s stack is a nice full stack iteration I would recommend to anybody developing a Minimum Viable Product (MVP) and is as follows:

Application Layer:
ASP.NET in C# using cool features like @Razor

Database Layer:
Native XML DB for Contacts & SQL Server for Customer Details/Transactions

Network Layer:
Azure Cloud Deployment with configuration at Storage and Network layer making the application more efficient and secure

So, yesterday’s launch was totally awesome but what’s new in general terms for V2.0?

Application Reengineered from a Database First design – I re-engineered the application with data modelling (database) tables moved up-to the application layer as modelling Enums. The V2.0 code first approach and MVC design pattern made sense as a redesign decision given the decreased pressure on database calls for information in processing transactions in particular.

More Structured Data – Data generation for transactions has been mainly transferred from database tables to app layer Enums, which also provides flexibility for future development direction keeping data accuracy high and customer effort low.

Database Redesigned - As I’m still a poor student in spirit (and pocket), I could not afford to have a larger SQL Server instance on Azure so a thrifty architecture for the application made sense making the SQL Server instance as small as possible. By Microsoft Azure’s pricing tiers go, I cannot make the database resource any smaller, which is good news for my empty pockets and also good direction for anybody looking to develop an Minimum Viable Product (MVP)!

The new features for this re-engineering orientated release is as follows:

Responsive Design – Two stages (768px/500px) of responsiveness are styled so this MVC application can render just enough resources to be presentable at screen sizes less then a general desktop. This includes a hamburger menu in the restricted states, which is run on JavaScript functions.

Login Box – Whilst technically a developed feature, the use of customer details (e.g. Customer ID) in a box like presentation along with options applicable to the logged in and logged out state are a basic but useful feature to have.

As the project is Open Source, you can check out my code on Github at at Project MulderbertPX. Below is a 7 minute 50 second feature movie demonstrating the application’s features with wonderful ambience music from Pytor Ilyich Tchaikovsky… hope you like it!!



The main lessons learned from this experience has been that:

ASP.NET still has great abstracted functionality to do cool things concisely such as @Razor Enums helper methods, which streamlines “View” code immensely.

Good Software Architecture is incredibly important, as you don’t want to struggle with technology access like I have done. I completed my SQL Server instance on Azure using a Mac and had no view of my DB internals. I started developing this project on Windows machines at Dublin Business School (DBS) working on SQL Server Management Studio  (SSMS) with full view of my DB internals. When my access to DBS resources finished 29th of September, the last part of the project was done on Azure’s brand new SQL Server Query window. I enjoyed the SQL coding BUT missed looking at how many tables, attributes, views, stored procedures and indexes I had. So please consider this my “Dear Santa” letter as Christmas is coming…   “Dear Microsoft, I would like SQL Server Management Studio for Mac please? Will you be my Secret Santa this year???”

Good Programming Practices like abstraction, encapsulation, inheritance and polymorphism are kernels that support clean, neat and reusable code! Considering these concepts was how I developed the application so its understandable that mirroring the service and product’s coding paths may look like an inefficient implementation. However, future development may see the customer journey diverge on goods versus service products or maybe a phased introduction of an online payments service is required. Both scenarios are likely making separate implementation paths in this release a good idea. It’s a judgement call based on the V1.0 frontend design, which hopefully will prove useful in future developments.

Version Control is your friend. The extensibility of the application was apparent to me and working as part of a multi skilled team would be the only way to develop larger and scaled future versions of the application. Also, if everything goes up in smoke on my Mac (I call her “Debs!”), using version control like Github is the only option!

SEO Counts. It’s a good idea to ensure your metadata is working and you register the application with Google and Bing especially if it’s a real e-Commerce site. There is an impressive array of API options available for Facebook and Twitter so taking time to understand what they are is a good idea! 

I guess as I start my next application (ASP.NET Core app) to showcase my projects to date, I will remember this application as a fun development experience that was loaded with learning for the future!




Wednesday, 9 March 2016

Big Data - Here Today, Here Tomorrow

 Big Data Adoption, it’s really happening.. Is it time to get on board?

Technology has evolved over the last 60 years and today we continue our lightning fast journey through time with technology by our side. The term “big data” has been used by many to describe data analytics which are often compiled from spreadsheets. They say ‘(Microsoft) Excel is an accountant’s best friend’ yet it comes with a lot of limitations that cannot be overlooked in today's world. The evolving nature of current data driven decision-making at senior levels in organisations places a huge burden on departments responsible for analytics and management reports.

We as a race have produced more information in the last 2 years then we have in the last ten thousand years making data analytics in today's operating environment a real challenge.  The evolution of big data has seen technological breakthroughs in streaming, batched pipelines, distributed clusters and data centre management. If we are to capitalise on opportunities presented by big data, we need real time or near real-time streaming along with batched data ability that is indexed and easy to transform so we can analyse it producing insights in support of the management decision making process.

Here are some high level points that one should think about when considering big data as a professional and/or an enthusiast:
  • Open source with it’s democratisation is truly the king of big data. Harness the power of the open source community and collaborate in the evolution of big data that will service your needs
  • Big Data Architecture is the looking glass into the future. Think distributed computing in two ways, what works and what works for you. Scalability comes at a price... make sure your solution comes with the appropriate flexibility in partitioning and try to keep one data layer only in your big data stack.
  • Data Management should determine your security protocols ranking your data in layers of sensitivity. Ensure parity between your policies and your big data architecture. Allow this to drive things like storage solutions (in-house, cloud, hybrid), design, deployment, etc.

Data analytics and visualisation should become more “visually orientated” with a data on demand mindset. Create a higher level of abstraction based on visual filtering for your analytics suite.



Finally, when you have a working data pipeline servicing your needs through a big data stack that presents useful tools and analysis for use, make sure you use it. Package your end result in an easy to understand format with visually driven reports from one of your most valuable resources, which is the large volumes of data you collect every day! Now is the time to transform your future with big data that will not only create awareness and understanding, it will create value for your company both now and into the future.

About the author: John Mulhall is a Marketing Technologist and newly Minted Software Developer. John is also a committed blogger and from February 2016 onwards, will be publishing blogs every second week on topics around Technology, Leadership and Sustainable Capitalism.

Sources/Credits:

Pics;

Credits;




Wednesday, 23 December 2015

The Software Industry: Unlocking the Door to Enter

How newly trained professionals sink or swim into the software industry
Less than 6 months after I completed my first set of software qualifications and certificates, I can say that the more I learn, the less I know! This realisation has led me to use every opportunity I can get to learn about software and understand what makes software tick.
In my continuing networking journey, I have had numerous conversations with senior and/or experienced software professionals who have on balance been very helpful and generous with their time along with their knowledge. However, there are some times when I left a conversation more confused than I should be given I don’t have a learning difficulty and my inquisitive questions were clear enough. An example: I was at a networking event just under a year ago as a student and asked an experienced guy who was talking about Lambda functions to explain how they worked. The answer was along the lines of ‘Well…… you get an Array or a List and you blah blah blah with taadaaa and then if your magic wand is working, you get hocus pocus and TAADAA… you have LAMBDA…’.. so needless to say, I smiled, said nothing walking away with the impression either he was an idiot or I was! Since then, I covered lambda in architecture and got to know in high level terms about it and the anonymous function it provides with the ability to process data on a once off basis if required. I just coded Lambda on the Code Academy course on Python, which brought me back to its usefulness and pondered how new entrants to software truly sink or swim to a place of traction for their skills, where they become recognised and employable software professionals.
So, I submit that new entrants need to prove themselves in their ability to code professionally by:
  1. Learning how to code well in at least 3 (2 OOP/ 1 Functional) languages along with SQL and understand Database Administration (aka DBA)
  2. Learning the principles of Project Management, Software Development and Web Development
  3. Becoming skilled at coding scripts
  4. Becoming skilled in Object Oriented Design (OOP)
  5. Becoming skilled in Functional Programming

So why do some software professionals apparently think its ok to confuse the new guy instead of clearly helping them or just saying “sorry bro, I don’t know, but it’s worth finding out?” I guess human nature is partly to blame along with the bewildering amount of content a software professional needs to know.
As the new guy to the industry, I think this to be a widespread human phenomenon after my prior career in management, where dealing with numerous issues arising from ‘people politics’ was a common task. Focusing for a moment on the wider business world, what I observed was the inability to admit confidently one does not know everything and seek help can often contribute to the reasons why companies suffer strategic setbacks, which of course is resolved in different ways. Point is… if we all use what we know as a “true north” pointer to what we need to know, then this issue would not be so common in today’s world. Sizing ego to knowledge and skill set is a hard mastered skill but when mastered, it produces a penetrating clarity that serves the individual well over time.
So, on the flip side of good practice, bad advice is much more damaging than no advice, which is why I think we as software professionals (training and qualified) should follow a standard that effectively bans hot fudged and confusing answers by doing the following:
  • Communication: Understanding the question, if not ask for clarification
  • Honesty: If we don’t understand it, we confidentially admit it as an act of virtue, not an act of vice
  • Continuous learner: We collaborate to help others and ourselves in the uncovering of the solution, for to help our fellow programmer is to help ourselves
  • Community: We contribute and help out where we can with open source communities believing we are stronger together by bettering the quality of our understanding through sharing our insights
  • Policing: We challenge the hot air merchants who pass as programmers but think its better if the new guy doesn’t get too good at his job in case they may look bad. Fact is that stone walling the new guy IS BAD!
  • Fellowship: We share our passion, our belief in the pursuit of excellence, our ethical values, our skills and our time freely in the knowledge that others freely do so with us!
  • Title: We become our own community under one moniker, being that of programmers!




If we believe in a future underwritten by software, then it makes sense that we stock, not block the rise of new software professionals through community, company mentorship and just being helpful in a clear manner. If we bring the right attitude with us every day, we develop the right culture which will pass onto the new incumbents as part of their cultural identity as programmers. It’s never too early to start building, so as software builders, today’s labour building clarity and community will become tomorrow’s cornerstones for something great! V2.0 awaits! On that positive note, happy Christmas everybody, see you in the new year with my first 2016 post on my personal site (blog) and on LinkedIn!


Sources/Credits
Pics;
Credits;
DBS for pic (& educating me in software)

Wednesday, 16 December 2015

Python as a Software Language - Does Sexy ever go out of Style?

Python’s lineage in science defines its past, but does it define future direction? Is Python 3.4 here to stay?



There has being allot of talk coming from certain quarters about Python being a dying language, which of course is not true. Python’s adoption is increasing and since finishing my last course in Software and Cloud Technology, I have heard that Python technology, community and jobs becoming more plentiful, which is great news indeed (...if you like groovy software!).


All computer science or software students will tell you that Python is a dynamic language that is learnt after learning strongly typed languages like C# or Java. For instance, I learned Object Orientated Programming (OOP) through C# at college and a little over 6 months later am programming in Java and Python alongside other languages at entry level. This “newbie” first impression of Python (compared let’s say to C# and Java, which are similar to each other) has led me to to consider it a sexy language for the following reasons:
a.              Syntax is concise, you literally can do more with less. You don’t have to programmatically write a novel to make a programmatically correct point!
b.              Don’t have to worry about excessive {wrapping of methods} making methods more readable
c.              Function nesting is actually fun
d.              Dynamic typing of data types allows you to move through variable declarations much easier and variable typing is smooth allowing good data typing to take place dynamically. E.g. int x = 12; in C#/Java is x = 12 in Python.
e.              Mathematical and Scientific libraries are awesome which is a clear advantage over general purpose languages like Java or C#. Am only scratching the surface of libraries like numpy and scipy but intend with time to get more immersed in them.
Downside for me compared to Java and C# is the following:
  1. Interpreter language so you need to run it to see a programming mistake. Don’t run your program regularly and use good development techniques, you could be forever debugging your code. Compiler warns you when typing of certain problems in Java and C#
  2. For those like myself who are not gurus yet in the language, we code heavy using the libraries and intelisense. Better IDEs for little to no cost to compete with Java and C# would bring more new (and poor) programmers like myself to the language.
  3. Python’s original use case is scientific but it’s very good for example in web development. Wider adoption due to its “science/numbers” reputation may be slower in my view than it should be.
  4. Python 2.7 (established and awesome) V 3.4 (why are we all not using it?). Transitioning to Python 3 is a very long process with 2020 as the cut off date for supporting Python 2 according to Thomas Robitaille’s article reporting on his Python adoption survey.
So, on the primary use of Python 3, Thomas’s survey 2012 (313 respondents) saw Python 3 uptake at 0% rise to 17% in 2015 (781 validated respondents) for primary use, which is a note that its slowly rising in adoption. There is a myriad of reasons why it is such a long process and a slow rising number on Python 3. Some of those reasons are as follows:
a.        Scientific libraries are fully compatible with Python 3 raising that number from 0%.
b.              Some use-cases are apparently not supported yet in Python 3
c.              Python 2 is still being used in training for the language (online & classroom)
d.              Company migration is not as fast as it could be from Python 2 to Python 3 restricting what version developers use
e.              Windows use of Python (originally on Linux/Mac) is up-to 10% thanks to continuous integration testing from developments such as AppVeyor giving Python further penetration power into Enterprise.


Here’s the kicker, when an open source language has two stable versions that are popular and is strongly supported by the community, it delivers a ‘slow burn’ transition possibility to Version 3 by 2020, when it just may outclass all others in areas that would not normally consider Python as an option. Even now, Python’s use cases has expanded from its core scientific beginnings to do things like web development to calculating the distance between stars in other galaxies, so it’s not hard to why one may term it as sexy language. Why not leave your opinion. Is Python a language worth learning?

Sources/Credits:
Pics;
Credits;
http://astrofrog.github.io/blog/2015/05/09/2015-survey-results/