Sidebar Menu

Projects

  • Dashboard
  • Research Project
  • Milestones
  • Repository
  • Tasks
  • Time Tracking
  • Designs
  • Forum
  • Users
  • Activities

Login

  • Login
  • Webmail
  • Admin
  • Downloads
  • Research

Twitter

Tweets by stumathews
Stuart Mathews
  • Home
  • Blog
  • Code
  • Running
  • Gaming
  • Research
  • About
    • Portfolio
    • Info

Try Monad, Progress and Lockdown Rules

Details
Category: Blog
By Stuart Mathews
Stuart Mathews
29.Jul
29 July 2020
Last Updated: 29 July 2020
Hits: 4648
  • Java
  • REST
  • Ruby

I've found working from home to be a lot more useful than perhaps I'd ever imagined it to be. 

The routine and flexibility have allowed me to more easily complete my deliverables in many cases (though I do tend to go to be later). For example, I am able to go for runs more routinely, and my days are uninterrupted which helps me concentrate and make productive advances in my work.

Due to these advances, I've very much considering this to be my default modus operandi moving forward and reducing my travel and potentially my rent in the future...

At the moment I'm learning about various design patterns and as part of my ongoing research and even made a foray into Lambda Calculus while reading a paper by Haskell author Paul Hudak written in 1989. I find reading papers to be quite enjoyable, and immersive - particularly as I'm already at home after work with no tiresome commute.

I've realised that I very much like doing investigative work, research or otherwise. Particularly true of debugging in general or any aspect where I need to paint a clear understanding from an otherwise unknown or blurry set of circumstances. I really enjoyed the Digital Forensics course I did for example.

I guess at the heart of it, this is a form of conceptual modelling - piecing together understanding about the unknown. And I think it can be quite a personal thing, and therefor quite rewarding - because you've got to figure out, in your own way how something works ie make it understandable. This can be a very creative process. I find drawing pictures in my notebook the best way to model things and ideas, I'm also quite partial to using my Surface too.

My running has made leaps and bounds, I've increased my fitness to a large extend while under lock-down, which perhaps compensates for the amount that I'm eating too!

I recently I wrote about some aspects of the testing framework in Ruby RSpec let and let! differences which came up during a discussion and have found the platform generally useful. 

I've also been re-writing a prototype game to use Functional programming paradigms and techniques to first show that it can be done, and to document what they are - for purely research basis.

As part of this and other ongoing learning, I've updated my LanguageExt tutorial (which had made it into an arctic vault), so will now be enjoyed for generations to come! It also happens to be its 1st Birthday this month. 

I've added a new use case for demonstrating the Try<T> monad, which is such a useful thing but is something somehow, particularly people I've spoken to about it, haven't appreciated as much.

I've also been prodding around in J2EE code around using RX-Rest, Glassfish, JSF, JPA and EJBs but not in a huge way these days. I'm looking for excuses now.

 

Agile and Model Driven Development

Details
Category: Blog
By Stuart Mathews
Stuart Mathews
14.Jun
14 June 2020
Last Updated: 14 June 2020
Hits: 3194

Model driven development (MDD) primarily focuses on developing conceptual models during the Software Development Lifecycle with a secondary emphasis on the code by “shifting from programming to the creation of models and transformations between them” ({xbref tag="0" title="Shin, 2019" desctext="Shin, S.-S., 2019. Empirical study on the effectiveness and efficiency of model-driven architecture techniques. Software & Systems Modeling 18, 3083–3096. https://doi.org/10.1007/s10270-018-00711-y" }Shin15{/xbref}, 2019).

Agile focuses on project delivery practises and techniques which manage the effects of change during a project by focusing on the people, communication, collaboration, feedback and working software ({xbref tag="0" title="Cockburn et al, 2001" desctext="Cockburn, A., Highsmith, J., 2001. Agile software development, the people factor. Computer 34, 131–133. https://doi.org/10.1109/2.963450" }Cockburn et al, 200115{/xbref}).

MDD and agile are both concerned about the successful delivery of artefacts during the SDLC.

Incorporating the benefits of agile, which focuses on managing project delivery in the face of change, has been shown to be successful in projects focused on developing models as their primary artefact - where the various agile principles and methodologies have been mapped to their MDD counterparts such as Continuous modelling to Continuous Integration, Test-Driven Modelling to Test Driven Development, Automated batch mode simulation to Automated test regression and other related activities . ({xbref tag="0" title="Zhang, 2001" desctext="Yuefeng Zhang, Patel, S., 2011. Agile Model-Driven Development in Practice. IEEE Software 28, 84–91. https://doi.org/10.1109/MS.2010.85" }Zhang, 200115{/xbref})

Among other benefits of agile, is its focus on feedback and collaboration which “reduces the cost of moving information between people” and helps reduce the elapsed time between making a decision to seeing the consequences of that decision” (Cockburn et al, 200115)  – which can only help make development teams more efficient and models more effective.

MDD and in particular, The Unified Modelling Language (UML) have been shown to be effective in contributing to requirement elicitation, producing “well-defined semantics and an elegant graphic syntax for expressing rich business requirements” (Shin15, 2019).

Furthermore, MDD focuses on design abstractions which helps, “alleviating the complexity of platforms and express domain concepts effectively” {xbref tag="0" title="Schmidt, 2006" desctext="C. Schmidt, 'Guest Editor's Introduction: Model-Driven Engineering,' in Computer, vol. 39, no. 2, pp. 25-31, Feb. 2006, doi: 10.1109/MC.2006.58. https://ieeexplore-ieee-org.libezproxy.open.ac.uk/document/1597083" }(Schmidt, 2006)15{/xbref}, contributing to both the design and analysis phases of the SDLC.

However, one study has shown it less effectiveness in transforming these model to accurate code representations, in particular MDD’s “round-trip engineering” phase which is the synchronization of code and models, “was not perceived as effective or efficient” by the study (Shin15, 2019) and echoes much earlier concerns raised by Schmidt and Ambler in prior years.

That prior study also highlighted the difficulty of defining Object Constraint Language (OCL) expressions, even within relatively simple scenarios and how Query/View/Transformation (QVT) is a relatively complex specification, contributing to perhaps its perceived effectiveness.

Cockburn et al, advocates that agile development “excels in exploratory problem domains” and “high-change environments” and as such the analysis phase is an incremental iterative and dynamic endeavour which might not be “suited for everyone” suggesting there are limitations.

Research has shown that introducing new people “increased defects in new ASD teams” (Agile Software Development) and conversely when they move away, “Lack of knowledge retention” is an increased risk.

This research also identified the accumulation of “technical debt” which is the result from compromises made by technical teams where the “pressure of delivering in short time-boxed iterations cycles made them take short cuts to speed up delivery.  ({xbref tag="0" title="Elbanna et al, 2006" desctext="Elbanna, A., Sarker, S., 2016. The Risks of Agile Software Development: Learning from Adopters. IEEE Software 33, 72–79. https://doi.org/10.1109/MS.2015.150" }Elbanna et al, 200615{/xbref})

Both ideas rely on incorporating the problem space into the correct design for working software.

 

Rails, Euclid and Generating Mazes

Details
Category: Blog
By Stuart Mathews
Stuart Mathews
31.May
31 May 2020
Last Updated: 31 May 2020
Hits: 5214
  • Running
  • Math
  • Digital Signal Processing and Audio Programming
  • Ruby

Since Set Theory, Ruby and Upgrades, I've been focusing on learning new technologies recently{xbref tag="0" title="Changed jobs" desctext="I now work at VMware" } [Changed jobs] 15{/xbref}. The primary focus of the new platform under development is on centralizing the view of your current separate clouds{xbref tag="0" title="Multi clouds" desctext="AWS, Azure, GCP(Google), Alibaba etc" } [Multi clouds] 15{/xbref} and managing them from single operational, governance, security and cost management perspective.

The platform is based on Ruby on Rails and it is a completely new and another level of learning which centres around a platform that provides the tools to develop online or cloud-based systems. There is a striking resemblance to ASP.net MVC and Spring MVC however the added twist of needing to use ruby makes it an interesting proposition, not to mention's provision for metaprogramming.

I've been in the thick of learning about RSpec, FactoryGirl and the base Rails platform documentation. I've also been watching a lot of Plural Sight videos which has been quite a time-consuming process however an interesting diversion at times. I'm not even nearly made a dent in the materials.

I recently decided to write a simple game called Ruby Mazer entirely in Ruby over the May bank holiday weekend. This was really fun and got me conversational with ruby. I used a gem called Gosu to help with the drawing and input. The premise of the game is that you need to reach a point in the autogenerated maze without touching the maze walls in getting there. Once you get to the exit point, you are teleported to a new maze which is slightly more difficult. I used Prims Algorithm to generate and solve the models that make up the level generation routines. You can read up on the implementation in Ruby Mazer.

I've had to dial back on my recent reads{xbref tag="0" title="Recent reads" desctext="DirectX and Maths" } [Recent reads] 15{/xbref} as priorities have changed and I'm re-focusing on other things{xbref tag="0" title="Re-focus" desctext="Ruby and Ruby and rails being one, and some of the onbording training being the other" } [Re-focus] 15{/xbref}, however as my learning curve goes down, I'll probably continue with them. This has also been the case with my running over the last two weeks.

Having said that I went for a run yesterday as described in Hot weather running. I just about survived. I also earned two new(3 actually) blisters for my efforts. I played my specifically created Spotify playlist. A particular good running tune is Micheal Jackson - The way you make me feel and Dance Monkey.

In other news, I've recently started focusing on Euclid. It's fairly slow going, however 'slow and steady wins the race'... It's quite nice to see how common rules like how the angles under at the base of an isosceles triangle are equal - is actually solved in an actual proof so as to show/explain/prove where/how this rationale came from{xbref tag="0" title="Proposition 5, Book 1" desctext="This is the actual proposition by Euclid" } [Proposition 5, Book 1] 15{/xbref}. 

The other thing I like about the proofs is that they build upon each other. Initially, if you look at the rationale of a proposition, particularly the starting diagram{xbref tag="0" title="Proposition 3, Book 1" desctext="Given two unequal straight lines, to cut off from the greater a straight line equal to the less" } [Proposition 3, Book 1] 15{/xbref} it's not entirely clear however that it proceeds from the previous Proposition{xbref tag="0" title="Proposition 2, Book 1" desctext="To place at a given point[as an extermity] a straight line equal to a given straight line" } [Proposition 2, Book 1] 15{/xbref}.  This is sometimes a pain however I do think the mental realization of connecting where the previous proposition left off and where this one derives from it perhaps is a necessary mental step. The first 7 triangle propositions have been an interesting diversion over the last couple of weeks.

I've also been heavily customizing my editor recently for my new workflow - see it here complete with split screens and git integration! 

Now, I must not forget to sleep and must run more. Sleep and run, sleep and run and program in the middle (7 hours) 

More Articles …

  1. Set Theory, Ruby and Upgrades
  2. Time shifting, CS algorithms and Game Architecture
  3. Confidentiality by computation: The challenges of on relying on computational cryptography
  4. The Fourier transform, math, malware and decoupling
  5. Common network attacks and the shortcomings of standard network defences
  6. Encryption and network protocols
  7. BYOD and Implications for Network Security
  8. Mazer Game Design and Network Security
  9. Thoughts on Creativity And Originality
  10. Game Dev, Forensics, Math and stuff
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Page 19 of 182