Author Archives: 46377

Navigating through e-learning

Reading Time: 4 minutes

E-learning or as some prefer to rebrand it – digital learning is a well-known category of solutions that fulfills the role of educating, using a computer in some way. Okay, we’ve got the definition covered, let’s move on.

So, as an owner of a company, or a manager, what should you know about it?

Why in the first place?

The simplest answer – ignoring all other whys – traditional courses are more expensive. You can send off an employee to a “MOOC” like Udemy to self-educate, for much cheaper than providing them with actual instructors. You give them access to courses, and everyone is happy, employees are growing, and you’re paying not much, right? This is partly what our university is doing, offering LinkedIn Learning rather than providing an insane amount of opt-in courses that would require massive scale to work.

But hold on, it’s not that easy. You’ve just paid for access to courses to your employees and they’re not touching them. It might be a problem with your organization, its culture, or it’s a problem with you.
For example – some corporations choose to opt-in for learning Fridays (aside from other fancy Friday options). The problem with that is the learning time often is 2pm, Friday. What a great time for learning! What about employees leaving the subscription running? Well, some employers choose to opt-in for co-financed courses. You’re learning English online, but you’re paying for half of it, so you’re not wasting our money. I’m not going to analyze whether it’s a good or a bad solution here.

Big brother

So, the problem you’ve probably now noticed is – accountability in e-learning. Lack of real human interaction, no external force (if you don’t impose some requirements on your employee) (by the way – gamification might be a fun way to boost some of your employee’s motivation), and lack of predefined learning time, makes it hard for people to be accountable with their learning goals. That’s why one of the more important functions you have in Learning Management Systems is reporting.

Learning Management what?

Learning Management System, credit: 360factors

Learning Management System is a kind of software that’s designed to manage all of learning. From delivery of courses – by a website/app to administration. One of the most popular platforms, particularly in the world of universities is Moodle. It’s free and open-source, and you just have to pay for extensions from the store. There’s also plenty of other cloud options, starting with Docebo, Blackboard, Easy LMS, 360 Learning, and so on… They provide powerful options for most corporate users. They are slightly less customizable, not that you need to customize that much, they are giant machines (with the exclusion of Easy LMS – its point is simplicity) with hundreds of options. That sounds great, however, when it comes to money, it’s not the best deal. If you’re to be stingy, 4-12$/employee is not the best deal, for something that’s not deeply customizable. That’s where custom made LMS’es come in. Okay, you’ve got the LMS, now what?

Courses.

Courses, you can create them by yourself, or buy them. Now, a lot of LMSes come already with a sizeable portfolio of pre-made courses. However, they’re not really made for you. You can choose to create your own courses, which can prove to be expensive. According to skilldlabs.com – it takes 80 to 280 hours to develop a 1-hour course. That’s why a lot of platforms put pressure on making course creation/prototyping as fast as possible. You don’t want to create and your LMS provider doesn’t have what you want? You can buy off-the-shelf courses. New LMSes are supposed to integrate with a multitude of platforms like OpenSesame. If you’re a dinosaur, you might want to use SCORM though. It’s an age-old technology, a static zip-file with JavaScript in it, that communicates with your server’s API. That way, you can place SCORM truly, anywhere. You can also make a course in SCORM then place it in almost any LMS.

But I don’t want to own!

Sure, then go with LinkedIn Learning, or if you work in IT – Pluralsight. It’s a great choice, though a bit pricey. But as they say – the true value of education is intangible.

Counting numbers

Okay, you’ve got your happy employees learning from your curated list of content. Now, here’s the tough part. Do they actually learn? What they learn makes you money? That’s where reporting comes in. What does it do? You can measure multiple things, starting from simple course completion, ending at the hardest measure of all – impact on performance in the organization. Even though a course is liked, and completed by many, is it valuable to the company? It’s a difficult question that can’t be easily answered with numbers, and often numbers will yield fallacious results – as there are too many variables.

This is where we end our school trip, I hope you, have found this read useful to you, cheers!

Sources:
skilldlabs.com – How much does it cost to develop an online course in 2021? Lachezar Arabadzhiev
360factors – LMS picture

What is the idea of a Quantified Self, and it’s status in 2022

Reading Time: 3 minutes

What is the Quantified Self movement?

Quantified Self is an idea that you can measure yourself. Measure your sleep, measure your heart rate, productivity, sent-out emails, location, mood, water intake, and so on. Then you analyze it to gain insights into yourself. To improve oneself, as in self-help. The amount of data can be vast, thus it may require big-data-like analysis. The movement is made of hobbyists, early adopters and innovators.

http://www.markwk.com/quantified-self-mind-map.html – Mark Koester

Rise and Fall of Quantified Self

The movement began shaping itself, in 70’s in the form of personal surveillance. One blog post I remember is how the CEO of Wolfram – Stephen Wolfram, in 1990 started logging his life. However, question emerges, how much is it really insightful, valuable for self-improvement, and how much is it “data fetishism”, hobbyism as described on Wikipedia.

Stephen Wolfram – “The Personal Analytics of My Life” – emails sent by time.

As the Google Trends trend currently unveils itself, the peak of the Quantified Self movement was in 2013. Since then the idea declined, the movement slowed down.

The fall of Quantified Self

The idea lives on

However, the idea lives on. Self-tracking stands strong. The best example would be a device like Oura ring https://ouraring.com/ – ring device for tracking your sleep, or FOCI https://fociai.com/ (currently V2 (as of 02.01.2022) on Kickstarter), which helps people to stay focused by tracking breath.

What is the future of QS? One blogger on the QS forum (Eric Jain) described it as being in the low expectations cycle, in the hype cycle

Position of Quantified Self in the hype cycle?

Is that true? That is a question to be answered by the future, however, self-tracking will certainly live on, while the name of Quantified Self might be forgotten. There are certainly opportunities that present themselves, by solving needs for private self-tracking of medical data and productivity data.

If you are interested in this topic, here are some reading suggestions:
https://www.cs.swarthmore.edu/~jwaterman/cs97/f14/uploads/Main/qs.pdf – Quantified Self: Fundamental Disruption in Big Data Science and Biological Discovery (2013) Melanie Swan
https://www.schumacherinstitute.org.uk/download/pubs/res/202002-The-Quantified-Self-Hadi-Sami.pdf – The Quantified Self, Hadi Sami (2020) – tackles negative issues of applying the movement as well as the future and its past.
https://blogs.gartner.com/mike-gotta/your-sensored-life-an-expanded-view-of-quantified-self/ – Your Sensored Life – an expanded view of Quantified Self – Mike Gotta, 2014
https://writings.stephenwolfram.com/2012/03/the-personal-analytics-of-my-life/ – The Personal Analytics of My Life, Stephen Wolfram, 2012

An overview of low-code and no-code

Reading Time: 3 minutes

There’s a lot of buzz around the no-code/low-code.
What is it actually? And can you use it for free?

The Rise of No-Code Development Platforms - Zvolv
Source: zvolv.com

No-code is a way of making software, that doesn’t require any code and technically, any engineering knowledge. It generally provides a drag and drop interface, with pre-defined components. Its shortcomings are customizability and a limited number of standard functions. Usually, it’s made for one domain like database, automation, or graphical web development.
It’s associated with the wet dream of citizen development – everyone being empowered to ship software for the corporation.

Pixabay

Low-code is meant for people with engineering knowledge. It is not “citizen development” It’s supposed to make people “code and deploy very fast”[1]
A low-code platform reduces the complexity of development (e.g. takes care of hosting), therefore time to market. Its shortcomings are again, customizability, and types of structures it’s not designed to handle. As Veselin Pizurica described in his blog post on waylay.io – if the platform is designed vertically – for one use case, not horizontally, any deviation will require extensive work, or even re-write.

Charlie has a meltdown – FX, It’s Always Sunny in Philadelphia episode “Sweet Dee Has a Heart Attack”

Because of these issues, most devs ignore low code/no code. There’s yet another snake oil that’s supposed to fix everything and make everything run 10x smoother. Yet once you start using it, most of your work is work around some constraints – the most known example would be probably WordPress, the content management system that can be described as no-code. It’s certainly not a great experience for developers and the most productive one.

Case Study
appsmith.io

Having that in mind, it does have its merits. Take it as an example – no-code is great for making small, non-critical internal tools. You probably don’t want a tool, being used by your organization all the time, to be suboptimal. It doesn’t matter if it costs 1k or 50k to develop. Costs won’t matter here. However let’s say there’s a tool, that you’d want one department in one branch to have, maybe it’s an MVP, no-code platforms can enable you to have that, at 0.01 or 0.1 times the cost. As an example of citizen development – my friend, a non-programmer, just the other way made a tool at his workplace for dumping information about clients in a table, into an MS Teams chat, specifically into a OneNote document that’s pinned, using PowerAutomate. Certainly not the optimal solution, but it works.

Bubble.io Review – UPDATED 2021 – Tutorials, Templates & More! | Quko Studio
Source: https://www.quko.com.au/blog/bubble-io-review

Bubble – a platform that has a mission to make technical co-founders obsolete. The drag-and-drop platform claims to be able to build almost anything – even sites like Facebook or Airbnb. Of course, it will be not greatly engineered and could be difficult, as a non-developer to think in an algorithmic and system design way. But it works! (ish)

When it comes to no-code platforms you should know, as they also could prove quite useful:

  • Bubble.io – web development
  • Zapier, IFTTT, n8n, Integromat – automation
  • Airtable – “spreadsheet and a database in one”
  • PowerApps, PowerAutomate from Microsoft
  • Google Sheets, Excel; AppSheet – turns spreadsheet into an app
  • Waylay.io – enterprise automation
  • Notion – reportedly people consider it as a no-code tool
NocoDB : The Open Source Airtable Alternative - DEV Community
NocoDB

When it comes to Free and Open Source Software, here’s a list, you can use:

  • Databases – NocoDB – like Airtable, but FOSS and more focused on the database
  • Internal tools: AppSmith, ToolJet, BudiBase
  • Web apps: BudiBase, WordPress (if you call it no-code)
  • Automation: n8n, Huginn, Pipedream
Check new n8n major releases - Workflow - n8n.io
n8n

Sources:
[1] https://www.waylay.io/articles/low-code-vs-no-code
https://monday.com/blog/builders/low-code-no-code-platforms
https://techcrunch.com/2021/07/27/no-code-bubble-series-a/
https://github.com/taowen/awesome-lowcode

Tagged ,

SPACE – Measuring software development productivity

Reading Time: 2 minutes

Software development ironically might be one of the most human things to manage. Productivity is mostly tied to intangible resources such as knowledge/experience and the motivation of developers. And the outcomes aren’t as straightforward to measure as in sales or manufacturing.

“The SPACE of Developer Productivity”

First thoughts:
 – writing more code =/= writing good/great code
 – engineers tend to evaluate their personal productivity by measuring how much solitary “work” they’ve done – like writing their code undisturbed, it doesn’t matter to them if the code is actually useful

In a recent paper “The SPACE of Developer Productivity” (2021) – Nicole Forsgreen proposed an idea of a holistic framework for measuring developer productivity.
S – Satisfaction and well-being – self-explanatory
P – Performance – business outcomes; also quality (code and service)
A – Activity – the volume of development, design, and operations
C – Communication and collaboration – documentation, work reviews, and network
E – Efficiency and flow – efficiency of project management, perceived “flow” state, time measures like value-added time (eg. time not spent setting up the development environment)

It can be grouped further into 3 areas – like Jellyfish identifies
“Business alignment – Performance (being the most important one)
People management – Satisfaction, Communication, and Collaboration
Engineering execution – Activity, Efficiency, Communication and collaboration”

jellyfish.co

These measures can be used on an individual level, team level and global level.

What must be added, measuring productivity is not an easy feat and can be tackled wrongly. Metrics selected can be counterproductive or irrelevant.

Examples would be measuring lines of code – that incentivizes bloated code. Measuring scrum story points –can be artificially inflated. Measuring commits count or time spent working just by itself, is even worse. That doesn’t mean these metrics can’t be used elsewhere, just that they aren’t that strongly correlated with productivity. It’s important to notice, that what is necessary, is to combine, maybe even hedge individual metrics to gain a bigger picture.

Performance is the most important part of developer productivity as it entails the why of the development efforts – to bring business outcomes. Yet it might be the hardest to measure, especially if the end-product is used by humans, not machines where you can say “this cut our operational costs by 5%”.
Other factor, is that performance is relatively hard to apply to individuals – it’s harder to tie individual contribution to such an upgrade.

Further reading:

The Inevitable Rise of GitHub Copilot

Reading Time: 5 minutes

What is GitHub Copilot?

“30% of newly written code (in some languages) — is written/suggested by GitHub Copilot” was the newest catchy story from an interview with an insider from GitHub on Axios.com
But what exactly is GitHub Copilot capable of, what are its use-cases, and what are its worries and opportunities?

GitHub Copilot representative chart Source: GitHub
Source: GitHub

GitHub Copilot is a developer assist tool, currently in technical preview since June, dubbed as “Your AI pair programmer”. Its landing page is accessible at https://copilot.github.com
As it advertises, it is “More than autocomplete” as it’s able to suggest multiple lines of code, based on just a comment or a fragment of code. Its use empowers developers with the second pair of hands, a copilot.

Demo of GitHub Copilot from it's landing page
Source: GitHub

Copilot, is based on OpenAI Codex, an AI system that’s supposed to generate code from text commands, a descendant of GPT-3, and is more powerful (14KB vs 4KB memory). In its demo video, it shows a small JS game being made just by input like “When clicked make rocket move at 4x speed for 0.25s”.

OpenAI Codex demo - rocket
Source: OpenAI

OpenAI is a for-profit + non-profit (“capped profit”) company known for GPT-3 language model and many other ML models. It’s famously co-founded (as a non-profit) by Elon Musk. Now after the transition in 2019 – https://tcrn.ch/2u4k6ie to a for-profit “with limited profit” its preferred partner is Microsoft and its research is not open-source. (GitHub is now a subsidiary of Microsoft). Its shift is justified by AI research being heavily capital-intensive. Enough about OpenAI Codex, this article is about GitHub Copilot.

Using GitHub Copilot

GitHub Copilot usage is certainly not ideal, and it won’t “replace programmers” any time soon, but it’s pretty powerful and handy, and I’ve found myself yearning for a normal Visual Studio, plugin, that would enable me to use it with my regular C# workflow. Not long ago it’s been introduced to JetBrains IDEs and Neovim!

To walk you through an example:
1. I create a Python file in Visual Studio Code
2. Start with a comment:
“`# Download weather information for Warsaw, Poland from “
and it already suggested me – OpenWeatherMap
3. I’m not happy with its next-line suggestion so I hover over it and get 4 more suggestions, (as I’m lazy) – I go with # and print it to stdout; I later go on with import requests and json modules
4. Enter “def” – and it suggests me name get_weather(city) along with code
5. I enter my API key which I’ve just created and run the code (btw, it works)

Demo of code generated by me

Sounds like a dream-come-true? Yeah, it partially is, but, the code is not perfect, even here, it suggested I use an unsafe but common practice of entering API key inside the code (+ when I went through other suggestions it actually gave me a non-working API key). Also, printing inside the function and not including a country into the request is not a great solution either (which can also be changed by going with another suggestion)

So, as shown here, it can’t be actually used as a fully-privileged Copilot, more like a Junior Copilot, or an Apprentice Pilot which can be given a small, dumb task, and has to be corrected. Sometimes it can even suggest libraries that don’t even exist.

From personal experience with working on a larger codebase, it often suggests things that don’t make sense, but, it’s good enough for writing down repeatable things, and is good enough for making a quick test, before quickly changing the code based on learned things from Copilot’s suggestions.

A great article explaining tips for using Copilot can be found here: Tips for using GitHub Copilot in everyday Python programming – basically – “make your code readable” to improve quality of suggestions, “use type hints”, try next suggestions, and you can expect it to know most known libraries.

Problems

So, when it comes to problems with Copilot first that comes to mind is security. According to a study as quoted by David Ramel on VS Magazine, 40% of its suggested programs had vulnerabilities.

Copilot leaks
dtjm @ GitHub

Also, it can contribute towards leaks of secrets like API keys of sloppy programmers.
Copyright infringement is also a worry. Not everything suggested is original, and the longer it is, the higher the change it’s remembering someone’s code.
https://twitter.com/mitsuhiko/status/1410886329924194309 as shown in a funny tweet, GitHub Copilot created a fake license for the famous – fast inverse square root code from Quake III Arena.

However each programmer uses StackOverflow anyways, further than that, as in Against Intellectual Property  – Stephan Kinsella, IP could be considered as unjustifiable as it has no scarcity – an idea cannot be owned.

Future of AI in coding, future of Copilot.

Pricing of Tabnine
Pricing of Tabnine

If Copilot was to be priced against Tabnine (Link to price table) – an AI code assistant/completion – it could cost 10$ for regular, and 25$ for Enterprise, if it was to come outside of GitHub Pro subscription. However, it could cost even less for the standard version, as GitHub could aim for maximum adoption like it does with its GitHub subscription. However, running it must be more expensive than running Tabnine.

The story probably doesn’t end at code suggestions, to gain better code suggestions it will probably need to introduce a quality control model into its training. From that, they could offer that to users. Talking about quality control, we could see at someday Copilot or its another incarnation being used for refactoring existing code, paired with static analysis. Its context could be enhanced by introducing some simplified code overviews from other files, and it could load/be personalized for existing docs, libraries, to power its suggestions – it could even become a standard that each open-source library has code fragments for designed for code suggestions.

And of course, with time, it can get even more powerful, with bigger models, and better-designed models. As it seems to be a rule, even a new Moore’s law, that language models get 10x bigger every year – as suggested by Hugging Face. And photonic computers – like the one from Lightmatter – are only going to accelerate that.

Performance of lightmatter envise
lightmatter.co

MM