Data Mining Stack Exchange
The database of the Database Administration Stack Exchange was found on Stack Exchange and consists of xml files with the Database Administration StackExchange database, from 2008 to 2013.
The team, Labrini Koutsokera and I, used SQL Server and Visual studio to create the Data Warehouse and Cube that were then loaded to Tableau for the visualisation of the data. Hadoop was used for 3 MapReduce Jobs and RapidMiner for to run Associated Rules and Clustering Algorithms.
Data Warehouse and Cube
After clearing the xml files and passing them in SQL Server, the team created the nessecary relations and dimensions, using Posts as a fact table and cleared 5% of the total data as they were orphaned:
Metrics on Days, Months, Years as well as Badges and Tag frequency:
Clustering results relating to Post data:
Clustering results relating to User data:
2004: Olympics and Failed Macroeconomics
The years preceding and following the Olympics in Athens should see the city prospering. The infrastructure was updated, metro, stadium, roads were built. Tourism flourished.
Yet statistics show that even though Greeks in general felt richer than ever, the economy was stagnant. Or even decaying.
1. Unemployment rate rose to 11% from 4% in 1981.
2. Development rate fell almost to 0%.
3. National Debt reached 108,5% of GDP.
4. State employees almost doubled from 1981 to 2004 while state services efficiency fell. By efficiency is meant the total output of state services per employee.
How can this be possible when the country was supposedly developing?
Some Macroeconomic Theory
According to basic macroeconomic theory, when the government spends money in the local economy building roads, etc, the GDP raises. Additionally, when investments are made the GDP also raises. A simplified equation would be:
GDP = C + I + G
where C stands for goods consumption, I in investments, G in Governmental expenditure.
During the Olympics both I and G rose. And also the GDP rose as expected.
Why do G and I raise the GDP?
The multiplier effect
To put in a few words, the multiplier stands for the percentage the rise in I will raise GDP.
Let's follow a simple example:
8 million is invested in a stadium. That money is given to engineers, workers, electricians, designers. Now, they, according to the percentage of the money they choose to spend, let's say 80%, of the five million is also spent 0.8 * 8 = 6.4 million. This would be spent let's say at consumer goods. Now of that, the companies receiving the 6.4 will also spent again 0.8 * 6.4 = 5.12. And it goes on and on. With the help of mathematics we figure out that the multiplier is 1/(1-0.8) = 5. So the multiplier is 5, meaning that the 8 million investment will raise the GDP by 5*8 = 40 million.
But there's a catch.
The Multiplied Multiplier effect
The same amount of investment, with the same multiplier, can have a much different effect on the economy, depending on the nature of the investment. Lets follow two simple examples:
An ink factory
We invest 8 million in an ink factory. The multiplier can again be 5, so it will, according to theory, raise the GDP by 40 million. The ink later is used by an advertising company for posters. They advertise a brick factory. The brick factory will sell the bricks to an engineering company that will use them to build new office buildings. The office buildings will host another company that also contributes to the GDP and well-being of the people.
A gun factory
We invest 8 million in a gun factory. The multiplier can again be 5, so it will, according to theory raise the GDP by 40 million. Unfortunately the factory will make guns, sell them and the guns will be placed in an armory. Thus they will not contribute further to the GDP and the well-being of the people.
It is easy to understand that GDP and multiplier may be useful tools, but in some cases they do not correspond to reality. An investment with big multiplier that is applied only once won't develop the economy as one that will keep being reinvested and its products keep reused in the economy.
About the Greek Olympics, the investments were supposed to follow the first example. In theory, building the Attiki Odos, a highway circling Athens and the Athens Metro will help transportation and raise productivity. In theory the stadiums built will host many money-making events, like games and concerts or be transformed to be used in another way. In theory, the many houses built for housing the Olympic staff would be used as offices for the government and/or be sold to the private sector. In theory, the overpriced tourism advertisement will boost tourism, additionally to the Olympics.
That was the plan. But in practice, only the first one, Attiki Odos, the Metro and 3 stadiums are used to their potential.
Today, many Olympic stadiums haven't been used since the Olympics and stand unable to be used. The village built for the Olympics was never used officially; just some houses are being illegally occupied. Also, the branding and advertisement for Greece has been so unorganized that even the campaign logo changes with every Minister of Tourism.
As you can conclude, most of the Olympic infrastructure that should boost the economy like the example of the ink factory, due to inefficient management resemble the guns. But cannot even be used for defense.
Also, we should not forget that Greece borrowed millions for these projects that should be paid back. When you borrow let's say 10 euro, you should consider that by investing them, you should make 15. Pay the 10+1 back and keep the rest 4 to develop your economy. But Greece borrowed 10, made 3 and has to pay 11. This is how huge debt is accumulated.
Unfortunately such practices are not rare in the Greek reality. And these are that worsened the economy. Now SYRIZA, the hope of the Greeks, seems to follow these unorthodox practices that brought them here. But the people are gradually understanding the situation. Let's hope it won't be too late when the necessary changes are made.
The Need for Unity
A year ago, Britons favoured leaving the EU. On the same track, we were talking about the Grexit, which is hopefully abandoned in 2016 by the majority of the Greek people.
In 2016 I attended a speech by Martin Shults, the President of the European Parliament in the London School of Economics. And he has some pretty solid arguments about why the #Brexit would be a big mistake.
How can a country like the UK with 65m ( let alone Greece of 10m ) face the 1.4b China, 1.2b India and the power of USA or Russia?
We may have heard from our parents about those Asians. We may have seen them working hard but never taking the lead. We all have those fake "made in China" products. We usually tend to believe that they can just copy they EU and Americans, that they can never be superior.
In London, people still say "Let's go to the Indian" when they wish to visit a convenient store. They forget that the Indians dominate the UK Medicine market.
The times have changed. Once China and India were being used as factories by British, by Germans, by Americans. Once they used to leave in extreme poverty and were not able to do anything about it. Once..
Perhaps this image can help you understand the change that has taken place during the last years.
China is a good example: Having left behind most of its old Communist market policies, nowadays its socialist market economy hosts companies like Alibaba and HTC that gain a huge momentum. China is also USA's biggest creditor.
India participates strongly in research and is also upgrading its economy with a huge annual rate. And then, I bet most of us have had a Korean Samsung or a Japanese Sony product. Don't forget that Japan is in G7.
Estimates reveal that in the years to come, only 5% of the world's population will live in EU and that only UK or Germany may participate in the G7.
British, Greeks, Germans, French, Spanish, Italians, etc are all proud civilizations as they have been superpowers (economically, culturally, military) in the past. But the wheels are turning and now US, China, India and Russia seem to lead the way.
Even as hard as it seems to be achieved, only an economy as big as EU can be capable of facing them. Yet, many changes and reforms have to take place to let EU run efficiently. When half of the EU countries think of getting out, obviously we are doing something terribly wrong.
Sometimes compromise is in the best interest of all. We have to fix EU, not ditch it.
Genghis Khan's Persuasive Techniques
Genghis Khan was the first Emperor of the ruthless Mongolian Empire. Raised without a father in the Asian steppes, grown up as a prisoner and exiled after killing his own brother, Temujin as his real name was, managed during 50 years to create an empire that spanned from China and Laos to Baghdad, Hungary and Russia.
He began by taking the reins of his own tribe and its surroundings and managed to march his army to Korea, Egypt, Poland and Java. But when he started, younger than 20 years old, he had nothing but his family; no army, no followers, no recognition, not even education. Nevertheless, he did have his tough character and his hunting techniques, as Mongolians used to be nomads, hunting every day for food.
When he was young, he was trained at luring prey, making it vulnerable and defenseless until it surrendered. Apparently he used the same techniques with humans too. Even by having such a tremendous fame he was not a fan of atrocities and brute force. He used trickery, tactics and persuasion techniques to succeed as an emperor.
Similar forms of trickery and persuasion are used nowadays in politics, warfare and business. And they can definitely be used by all the inspiring but cold-hearted entrepreneurs that aim to create their own empire. There is no doubt that they can be useful.
Winning without a single arrow being thrown
Genghis Khan may not be a man that valued the life of his enemies at all, but he definitely never wasted the life of his own men, whose souls were considered sacred. His main strategy was always to win a war without a single arrow being thrown. He did not possess a huge army nor terrifying siege weapons. He possessed a few trained and loyal quick horsemen.
"To subdue an enemy without fighting is the greatest skill. " - Sun Tzu
When attacking a big city, he would first ask them to surrender with generous terms. Surrendered cities would join his empire only by providing him food and some taxes, while being protected by other threats. If they did not accept, their alternative was to face total annihilation, plundering and raping. Cities that surrendered, prospered from trade, since he controlled the silk road. He used to take good care of his new followers. On the other hand, cities that resisted were destroyed.
In that manner he used terror to acquire cities, just by asking them. And usually he was successful, thus saving lives, time and money, while making alliances out of enemies.
For many, he also was a liberator, as for example for the Chinese under the Sung dynasty that welcomed his policies and joined his army.
1. Fighting is costly, either in war or in personal conflicts. It is much more beneficial to make friendships and alliances, than to make enemies. Giving enough benefits to those whose join your side while making it unbearable for someone to be your enemy, you can win fight without even fighting.
Attacking silently from the back
Cities and fortresses tend to secure not only their gates but also the strategic passages to general area of the city. These passages may prove to be impassable by a normal army, as their strategic advantage is crucial for the defender. Hideouts, walls, archers are a few examples. Genghis Khan used his fast horsemen to search around mountain or likewise difficult to pass routes to the back of the fortress. When found, he would quietly guide his army, consisted only of horsemen, and attack rapidly behind their defenses. Also, while travelling, Mongols had cooking and camping techniques that limited fire use and noise, making their trespassing invisible.
In this way he managed not only to position his army in the most favorable and defenseless position, but also he exploited the element of surprise. Usually, the defending army, would be astonished and surrendered quickly.
2. People create physical and mental defenses to protect for threats. By pushing at those defenses you can easily waste too much effort and even lose. But by using subtler and covert approaches, you can win much easier. Also, the element of surprise can prove extremely useful in many case.
When attacking a big and well-fortified place, he never attacked with all his army at once. He separated his horsemen in small groups that spread across the countryside. They terrified peasants and merchants, forcing them to flee into the city to seek refuge. In that manner, panic spread rapidly into the fortress making it more possible for them to surrender while food reserves emptied quickly and morale disappeared.
3. On the one hand, when direct attacking is difficult, one should consider more covert and small actions that all together, strategical can have impact on the target. On the other hand, fear is a basic instinct of man and can easily be manipulated to disarm the enemy, both physically and mentally.
Genghis Khan managed in 50 years to create from scratch one of the biggest empires in history. But Empires are built to fall. It takes many years and one man to create them and many successors and few years to destroy them.
"Once there was a snake with many heads. When the winter came, it tried to hide to hole. There were many holes available. All suitable yet none perfect. Each head picked one and tried to guide the body to its own. While arguing about the holes the winter started, the snake froze and died. But the snake which had one head and many tails, went quickly inside a hole and survived the winter." -Old Chinese Saying
So clever with people was Genghis Khan that managed to manipulate millions to join his empire, yet he could not manage to guide his arrogant descendants to act as one head.
The Mongolian Empire
Learning About Drachma from an Old German debt
Einundzwanzig Milliarden zweihundertfünfunddreiâ└ig Millionen siebenhundertfünfundsechzigtausendhundertzwölf Marks:
the cost of daily living for a single family in Berlin of 1923, as a result of extreme inflation.
I do not wish to relate a past German to a recent Greek debt, as a hundred of years have passed and war reparations are way different than borrowing money excessively and inconsiderably. I want to depict the catastrophic consequences of a weak currency that perpetually depreciates while a nation tries to pay extremely large debts.
"In economics, inflation is a sustained increase in the general price level of goods and services in an economy over a period of time." - Barro 1997 Glossary.
When the general price of goods keeps rising the purchasing power of a single unit of money keeps decreasing and thus makes a consumer feel poorer while he still has the same amount of money.
In addition, Hyperinflation is an extreme rate of inflation, usually derived by war or an excessive growth of the money supply that can lead to the breakdown of a nation's monetary system.
What happened to Germany
During the First World War, participating countries were knowingly driving towards inflation. The majority of the workforce going to war led to a shortage of goods that resulted in higher prices, as with a steady demand for e.g. bread and milk, their supply decreased.
Also, Governments in desperate need to cover their excessive expenses during the war, turned to short-term borrowing from their people. They were literally turning debt into cash. They expanded their money supply, causing people's expectations of inflation to rise. This resulted to people wanting not to hold their cash but to spend it at the moment they acquired it, because spending it the next day would mean buying fewer goods. Likewise, salesmen expected prices to rise, needed more cash to cover their future needs of stock and thus rose their prices.
Germany was no exception, although Reichsbank being separate from the government helped the situation.
Critical is, what happened after the war when defeated Germany faced extremely large debt for reparations. The German government not even once believed they could meet the terms imposed by the Allies and thus did not make any effort to pay on schedule. During the first 18 months, they did not even pay half of their debts. But the Allies kept pressing.
Germans did not only need money to pay their war debt but also to rebuild their country. The various following governments turned to Reichsbank. They needed it to print new money, for them to cover their expenses. And it did. Continuously. Buy even though Germany was such a big country with a gigantic work force willing to support production and exports, they did not manage to stand strong quickly enough.
Germany got caught in a drowning whirlpool of inflation for the next years:
"Germany experienced the single greatest destruction of monetary value in human history. By August 1923, a dollar was worth 620,000 marks and by early November 1923, 630,000,000,000 marks. Basic necessities were now priced in the billions: a kilo of butter cost 250 billion; a kilo of bacon 180 billion." Lords of Finance, Liaquat Ahamed
And even though German exports were extremely competitive, with such an inflation, imports were out of the question. Also, German land became extremely cheap to acquire for a foreigner. These extreme conditions were that gave birth to the Nazis.
Greek debt similarities and Drachma
The Greek debt poses many similarities to the aforementioned German but also one significant difference: Greek economy is not even comparable to the German.
Although its origins differ, Greece in 2015 has accumulated a similar huge and impossible to pay debt by excessive borrowing. For years it borrowed money, mostly from European countries to pay older debts and to develop its production and civil services. Its lenders thought Greek economy was sustainable and will pay its debt. The Greek people, feeling as prosperous as the developed European countries, overspent on services and foreign consumer goods, while giving no thought about their production.
The key point is that Greece did not use the borrowed money to develop its structure, like Germany in 1920s-1930s in order to be able to pay back and have a sustainable future. Everything was spent on imports, services, luxury products; nothing that would bring money back into Greece. Also, a lot was lost on fraud by the major governing parties. As we say in macroeconomics, the borrowed money was not given to investments that will perpetually produce new value while rising the GDP (In that way you are both able to pay your debts and also develop). It was lost, mostly by turning it out of the country.
Greece now stands with almost no production and only a little income from tourism. Its vegetable oil, agricultural, electronics, clothing and oil products exports may exist but are no match for its competitors.
But still, with the aforementioned example of Germany with a huge economy and many others that failed to pay extreme debts by just cutting new currency, more than 1/4 of the Greek parliament believe exiting the Eurozone and turning to a new Greek currency is the only way for salvation.
More likely it is a way for doom. Of course Greek people face extremely large difficulties, but changing to a local currency right now will condemn them. Greece does not even posses reserves to back up a new currency. It will only make the debt larger. The need for money will invoke hyperinflation to the new currency. With no exports to support the Greek currency, Drachma will depreciate in such a way that land and companies will be sold for nothing to foreigners. Furthermore, much needed imports such as medicine and electronics would be a privilege for only those who have cash in another currency. The implications of such an isolation are well-known. History does repeat itself.
Maybe we should have never entered the Eurozone. But we did. And afterwards we strangled our economy by our overconfidence and by not caring for the future. It is now high time to stop acting superior and understand that we failed under the pressure of much stronger economies.
Such times stand vulnerable to extremists that will furtherly destabilize and harm the Greek society. Whatever the government, we need to act clever while staying focused, united and organized in order to steadily rebuild the Greek economy by focusing on quality exports, less imports, solidarity and transparency.
There are plenty strong arguments about drachma. And I agree with plenty of them. But you do need a strong, organized and hardworking economy to back up a new currency. Let'sfor once focus on how we are going to be better, let's make our economy stronger and then we may discuss again about Drachma.
The WebSummit Experience
During the first days of November 2015 Dublin welcomed more than 30.000 people. On the morning of Tuesday the 3rd, Paddy Cosgrave opened the WebSummit, greeting thousands of attendees from all over the world, including CEOs, CTOs and many other executives from the biggest worldwide tech-related firms and over 2000 volunteers and staff.
Participating in this unique experience, one could visit 15 summits running simultaneously and hundreds of different start-ups coming from several different sectors and countries. But from listening to the Facebook CTO to talking a new start-up from Hong-Kong, there are many facts that should be noted and shared:
"Don't let go your idea. It may change the world. ", Alexander Knoll, the youngest CEO in WebSummit and the creator of the Ability App. Which found Jason Musante, Managing Director at Havas Worldwide, in agreement: "The only failure is not to try" and Ben Jones, CTO of AKQA followed with "Hell, if you are going to try, be sure to try all the way".
Just keep in mind that entrepreneurship is not a place where one decision will lead to success and the others to failure. Entrepreneurship is not all about decision making or having only the perfect idea. When venturing be prepared to fail. Persistence will keep you on track. And every failure will make your wiser and stronger. Then you will find success.
But success is not setting a goal and achieving it. Success is being able to set a bigger goal every time you succeed. We live in a world that is changing and if you are not changing, if you are not scaling up, you are doomed to fail.
Mike Schoepfer, Facebook CTO can give as a perfect insight. Facebook is considered a success. Extremely large numbers of users, extreme revenue. Yet, the do not feel that reaching what for many would be the ultimate dream, is enough:
1. They have created an extremely lightweight plane that can fly up to 90 days powered only by solar power that provides internet to rural areas.
2. They even want their satellites to provide internet across the world.
3. They are designing an AI Assistant like Siri and Cortana for the Messenger App that will be able to plan your day, predict the future from your photos and of course will be able to understand you speaking to it.
4. They develop the Oculus Rift and aim for a future Virtual Reality Facebook experience.
5. This is actually the time where Facebook is being truly innovative.
Facebook is not the only one who is being innovating though. I had the luck to talk with the creators of BLOCKS, the first modular smartwatch. We have gone further than the Apple Watch, we can now have a strap of connected chips with different functionalities to add to the main core of the watch.
Instagram Founder Mike Krieger mentioned that they have some awesome plans for the next years, but what really caught our attention was his intuition for the new selfies: The VR selfies.
VR is here. It is finally hear. Throughout the WebSummit, Samsung, Google and startups were seducing participants to the power of the VR systems. Oculus, Cardboard, Gear. All amazing and almost ready. During a discussion between CBS and BroadBandTV CEOs, we could easily see their plans. If there is going to be VR on Playstation by 2016 why should there be premium VR channels on TV by 2017? In addition, Google I suppose had the best Marketing Plan for its VR. Cardboard were given for free with the New York Times paper a few days after the Summit.
What about marketing? Facebook Head of Ad Tech, Dave Jakubowski, has some good insight on Facebook ad policy.
1. Social connected the world. It connected the Customer with the Firm. So focus on insights from real people, not just your intuition.
2. Be where the customers are. First you should do the cross device part; that is the easy one. Then, you should consider that customers are across everyting. So you have to be everywhere.
3. Understand the entire customer journey, not just bits. To understand customer behaviour, you should be following them and helping them from the moment they become aware of your product to every step they make before and after buying it.
4. Native is king. Internet pop-up ads are dead. Google's application pop-ups are dead. Remember, interrupting people is rude. They do not like it. Ads should be made as subtle and smooth as possible to be accepted and effective.
5. Beware of wolves dressed as sheep. They can promise you anything. Be sure you have done your research deep enough when buying ads.
6. Be accurate, persistent and scale! Be based on data by real people and scale.
WebSummit was not only tech. Thinking is beneath innovation, beneath management and beneath entrepreneurship.
Saul Klein has an important fact to share: Regarding internet, USA and Europe are saturated markets. But the game is going to be played in China, Africa and India, the darker areas, as seen on the satellite map. Don't be afraid of the dark. The power on the world is continuously shifting. Be sure not to get caught behind.
Don't turn your eyes away from the dark.
A Floating Entrepreneurship Hackathon
"The two organizations, StartupBus and thinkbiz, decided to collaborate and together with Celestyal Cruises there organazing the first entrepreneurial contest on board! Our Goal , to inspire and motivate talented students to get more involved in the most active and growing sector of our economy." - getCruiseINN
These were the words that convinced me to join this unique experience in the Aegean Sea. And it was totally worth it.
To enjoy a magnificent Mediterranean trip traveling with a cruise ship from Piraeus to Mykonos, Kusadasi, Rhodes, Heraklion and Santorini. Meanwhile, the participants team up, develop entrepreneurial ideas and present them to the jury. The target was to create start-ups within Tourism sector, Cultural Heritage or to find solutions to problems, that exist in islands.
Starting from Piraeus port, we got aboard early in the morning and set sail for Mykonos. In a rush, we got to meet each other. There were both students and graduates. There were developers, businessmen, designers and people who had the best ideas. The last, presented them to us and during lunch we made the teams.
Afterwards, we set foot on Mykonos for team building and early discussion about the idea. We discussed about possible business aspects of our new entrepreneurial dream and with the best view of the island, we composed a detailed Business Model Canvas, with the guidance of thinkbiz experts. Also, we had discussions with the locals in order to get feedback for the basic concept of our idea.
The next morning we woke up in Kusadaci. We left the ship and found ourselves the best possible working place in the city. With powerful internet connection, charged laptops and a wonderful view, we dedicated ourselves to the prototype. We worked in parallel, in order to build a webpage, and a working prototype for iOS devices. With a genius developer and a wonderful designer, it was possible. Later, we caught our breath with a tasty turkish beer.
In the evening, after inspiring workshops by thinbiz, we visited Patmos island. Patmos is a not so well known tourist attraction that was quiet and peaceful. We took advantage of its calmness to discuss with locals and gather feedback as well as to collect answers for a web-form regarding our prototype.
Finally, we managed to finish a first version of a fully working prototype by staying up late until 04:00. It was worth it.
In the next morning we visited Rhodes. We had the honor to participate in a workshop in the University of Aegean where professors and local agents advised us on how to further develop our Business Models and Prototypes. Later we hit the road to visit the old city of Rhodes. We suited ourselves in a traditional district with a beautiful cafe and worked on our Marketing.
In the evening, we had to work our presentation. We created our final presentation, we had inspiring workshops about Pitching and got ready for the 4th day. The Finals.
With working till very late, we hardly woke up to catch a tour of the Tourist technological facilities in Heraklion, Crete. We got to test our pitching presentations at local agents and entrepreneurs and prepare ourselves for the finals.
Travelling to Santorini and being really tired and anxious, we pitched our ideas to the organizers and sponsors.
After dinner, the winners were announced and an Award Ceremony Party followed. It was truly unique experience.
1. Recisle, a start up aiming to establish a network that facilitates the recycling of companies' waste.
2. Monumentor, an educational application for kids that visit museums.
3. HopWave enables you to organise your own island hopping using all possible transportation options like boats, cruiseships, yachts even hydroplanes!
BeeC: An Algorithm for Data Compression
In 2015, I had the honor to present our new algorithm for Data Compression, called BeeC, with my colleague and co-author Fotis Katsigiannis at the 12th Conference of DMST.
BeeC is a compression algorithm that implements sequentially Huffman and LZW algorithms, achieving better results in text and image than the aforementioned.
We owe many thanks to Professor Mr. Spinellis and Mrs Kechagia for their valuable support throughout the last year and to everyone who was there yesterday to watch us.
Since the advent of the Internet and social media, users often download and upload memory consuming files. This renders the use of compression tools and techniques necessary. In this paper we present a compression technique and a tool called BeeC that uses two lossless compression methodologies. Firstly, the file is compressed with Huffman coding resulting the Huffman tree and Huffman code words. Secondly, all Huffman code words are concatenated together and then compressed by using Lempel Ziv Welch (LZW) coding.
Although there is a number of other combinations of famous algorithms, we chose these two for their speed and simplicity. For the evaluation of our technique, we tested our approach on .txt, .wav and bmp files. Our project's main strength lies on the fact that our method is more efficient on text files than Huffman (12%) and LZW (6%) alone, despite the fact that, Huffman is more efficient in multimedia.Critical is that LZW would not really compress sound or video files and thus BeeC, had better results than LZW but not than Huffman alone. However, by attempting a comparison with the well-known compression tool Gzip, we concluded that our algorithm could not exceed its performance.
Below there is a comparison of the size of the compressed files between, BeeC, Huffman, LZW and Gzip.
What is important for our study is that BeeC could be improved by achieving higher compression ratios benefiting organizations and users that store huge data files. Finally, this project was developed and implement in Java sourcecode, with a little help from Github, during our undergraduate course Programming II of the Department of Management science and Technology.