Showing posts with label Software. Show all posts
Showing posts with label Software. 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 DataData 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, 28 September 2016

THE FUTURE OF BIG DATA WITH HADOOP USER GROUP (HUG) IRELAND AND ORACLE


See my coverage on Irish Tech News of Hadoop User Group (HUG) Ireland's September 12th Big Data Event in association with Oracle. Outstanding speakers and an outstanding turnout made for a successful event! More can be found at:

Wednesday, 4 May 2016

Open Source Software (OSS) - Let's Show The Love

Why community matters for the future of software talent, products and the industry as a whole

We all love those stand up guys who volunteer first, arrive early and are last to leave from meetups, collaborations and indeed anything software related. They are sharing the passion, they are showing the love!! This is the good side of software as defined by the people within the industry who seek a better world through software using their passion to drive progress in an impressive way.
These channels of passion ultimately lead to the open source movement and in recent years have transformed the industry into a collaborative landscape where more and more software professionals are building their own products. They are contributing to more and more engineering led projects that are “pure” software in terms of process and culture. Many in established business are not comfortable with this as the threat of disruption is ever present when you have a collaboration of highly skilled software professionals in a room focused on a single problem. This may in part arise from the need for management ‘control’ (v ‘influence’) in allot of company cultures. This has often caused culture clashes between software professionals and management trying to stamp a traditional leadership style on a team leading to resistance and culture clashes to boot. It’s my view that this lack of understanding coupled with passion for software is one of the elements that has fuelled the transition to the open source model where software professionals freely collaborate over common problems they are passionate about leading to real world solutions that often carry commercial value.
So, with the rise of Web 2.0, the startup industry and the freemium model for tech companies in full swing, there are some highly profitable businesses out there that have their origins in the open source movement and prove the open source paradigm of collaboration does work turning more and more its detractors into supporters as time passes. Since the “OSS” train has left the station, we all should not forget where we are and where we come from when it comes to the open source movement. We should show the love in OSS through the following:
  • Enable a better quality of life with a life long commitment to the open source movement and the real world problems it solves
  • Widen scope from the selective and often poorly structured curriculum of education, which produces newly minted software developers and engineers. This should be done by providing entry points into software through community education free of charge for those aspiring to be software professionals
  • Provide continuous learning and development for established software professionals in upgraded and newly released products via community learning and education
  • Provide facilities free of charge to identified open source community groups that engage in community education and learning for new as well as established software professionals
  • Understand what actually makes a good software professional and identify these personalities upon entry into a the community education network ergo the community will retain and develop such individuals as part of OSS succession planning.
  • Work with industry under a common mission statement on what makes for a successful partnership with the open source software movement




What makes it all happen? I think it's simply passionate software professionals who by nature, not by training or experience care deeply about they do and want their skills to make a difference in the world. The more we actively show the love, the bigger the impact we have as a community. If we draw from our past and not let our past draw from us, we can make a better future that allows the OSS movement to take its rightful and sustainable place in the world today as the premiere software partner to business and society as a whole.

About the author: John Mulhall is a Community Manager 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, 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/

Wednesday, 18 November 2015

Technology & Culture… A RSVP with Disaster or Greatness?

What a Technologist actually is.. and how approach matters for successful outcomes

We all love our iPhones, iPads, Computers and Laptops as do we love to work in an office that has multi coloured beanbags as the conference room for all “official” meetings. If software is eating the world, technology is its master transforming industries, cultures and even professions into something more relevant in today’s world.

In a few short years, technology has changed the world with software in a leading role making lives better and more things possible that were previously out of reach! As a Technologist, I find there are two types of technology user, the deeply skilled who believe in it and those who are happy to be an end user of technology.

So what makes up a Technologist and are they the backbone of the Technology Industry building a culture and a legacy for others to follow? The free dictionary defines a Technologist as a “Specialist in Technology”. I think a Technologist brings more to the world and thus argue a true Technologist can be described as follows:


Believer in the power of technology to do good in the world
Giver by personality disposition always looking to collaborate and discerningly help others who share a positive attitude to community and helping out
Community is paramount to successful outcomes as technology depends on people collaborating over processes to develop progressively effective technologies
Creativity is wrapped in technical aptitude and knowhow
Commitment is not an issue for the Technologist who is committed to doing great things in technology
Enthusiasm never fades for technology in the right circumstances. A good Technologist if in the wrong circumstances will move to the right circumstances so the exploration of technology may continue
Continuous learner is a hallmark of a good Technologist who never stops learning, innovating and producing effective Technology that paves the way forward for society

The list is longer but the above gives a more detailed description of a Technologist in my view. Business often does not recognise the cultural gap between Technologist and the rest of the business. In various ways, business tends to be disapproving of anybody who cannot focus on profitability and the other management metrics that makes the business a viable venture. This has a core logic to it BUT if a Technologist’s focus is diverted from the core business of great technology, then the related outputs will be correspondingly below par and ultimately detract from the viability of the business. It technology cannot be great, then it will not unlock value for the customer which feeds into the bottom line of the business.

So bearing in mind the above description of a Technologist, how can this description bridge the culture gap between business and technology?

My first thought lies in the wider business culture that underpins business practice, leadership style and acceptable “people behaviour” on a daily basis. There is one way to do great technology but many ways to do good to great business.  In business; ok is acceptable, in technology nothing less then great will do!

So picture a business culture that is hierarchical and a Technologist working there that defines himself by the above highlighted keywords of:

Believer - Giver - Community - Creativity - technical aptitude - knowhow Commitment  - Enthusiasm - Continuous learner

The very fact that the Technologist maybe at staffer level in the company hierarchy relegates him/her to insignificant status within the company and thus open to all kind of interference from other (taker) business peers, untalented (taker) technical peers, leaders, managers and higher that may want something done and expect EXACTLY what they ordered from the Technologist. To keep his or her job, the Technologist will ensure they will get EXACTLY what they asked for. The real result is a talented employee disengaging from the company, who by culture considers the employee contribution to be insignificant in nature. As said above, if they cannot find a collaborative culture to grow in, they will migrate to one. Some companies lose allot of Technological talent down to this fundamental misunderstanding.

Companies in such a case may try to create/engineer a consultative technology sub culture, which may work in the short term. However, it is not sustainable even with a great technology manager as by design; culture clash mitigation lies with the Technology manager, not on the organisational design around him/her. Politics will find a way to reverse any stability and gains in the name of progress. The answer for hierarchical companies lies in overarching change to refocus the company's organizational design to better protect its elements by functional segment (V functional silo). If operations and technology cannot interact as one, then design a model where they can interact as two bodies. If agile project management risks a culture clash, then augment agile with silo deliverables and more reporting managed by very good project managers who have good organisational understanding and management skills.


The bottom line is that Technology already has a defined adhocracy culture that works well with the above description of a Technologist and thus an ideal setting for us Technologists to thrive in. It’s never a good idea from experience to think an Adhocracy Sub-Culture is sustainable when nested in a Hierarchical Culture. Also, thinking of finding a happy medium between the two means moving the expectations, practices and behaviours from the top down to a new hybrid culture that will ultimately fail due to the Giver Taker model where natural givers become victims of natural takers especially in conflict. As with all workplace conflict, productivity suffers alongside the victims of the dispute.

In my opinion, companies who cannot move to an adhocracy and/or clan culture should think about divisionalisation (i.e. create a technology company and an adhocracy culture) or outsourcing.  A company who gets it right, will become a technology company, not because their commercial product range is necessarily Technological. They will become a Technology company because they have made a home for Technologists who will guide them through the Technological age that we now live, grow, innovate and compete in.


Sources/Credits:

Pics;




Credits: