Archive for the ‘ Software ’ Category

The Cloud is a Fun Place to Be

You have heard too much about fun, and most of it is not fun at all – but more like pain. Nevermind, we are told – they are much the same thing!

I am learning programming, again – because it is so entertaining. It’s not hard, great stuff keeps popping into my inbox – and all I have to do is read it, get a good laugh – and if it is really good – pass it on.

I am reading a good, free book now What is Serverless? And it is directing me to – https://charity.wtf/2016/05/31/wtf-is-operations-serverless/ – written by Charity Majors – and published on WordPress – the great blogging service I also use.

Charity is a woman – but a somewhat (shall we say) – unconventional one.

Check it out for yourself.

 

Functions in Psychology and Programming

I am studying Functional Programming, and also William James’ Essays in Radical Empiricism, a basic text in another field: Psychology.

Let me quote from the later:

For twenty years past I have mistrusted ‘consciousness’ as an entity; Let me then immediately explain that I mean only to deny that the word stands for an entity, but to insist most emphatically that it does stand for a function.

There is, I mean, no aboriginal stuff or quality of being, contrasted with that of which material objects are made, out of which our thoughts of them are made; but there is a function in experience which thoughts perform, and for the performance of which this quality of being is invoked. That function is knowing.

I could not find such a clear and succinct definition of function in Functional Programming – and in fact, from my exposure to function in Microsoft’s Azure Cloud – I can see it is something else there (just what, I am not sure). So I have come up with one of my own (using F# terminology):

Problems can be solved by the use of modules of functions. Input data passes through these, and is transformed into output data. The functions themselves must not change – and this restriction is what makes this type of programming so important.

It also makes it applicable to programming only – everything in the real word, that we use to manage things, changes – often radically. Perhaps we should make these more stable – and our world would become more manageable.

Psychology speaks of experiences, Programming speaks of data. Functions, in either case – are what manages this basic stuff.

The Philosophy Behind Functional Programming

The programming paradigm we have always used was Imperative Programming. A series of commands to the computer – do this, do this, and do this. This was enhanced in the Nineties with Object-Oriented Programming (OOP) where software objects were created, with their own internal programming and memory – little minicomputers of their own.

These communicated by sending messages to other objects – including the operating system (such as Microsoft’s Windows) that ran the machine they were on. Large libraries became available (such as Microsoft’s .NET) – that all the little objects could use.

The hardware all this was running also was simplified by the use of Chips (large-scale integrated circuits) that communicated over a data buss and an address buss. Messages were flying back and forth everywhere – and the situation became confusing, because some of these little pieces changed, without the other pieces knowing it.

Keeping everything sorted out became a huge nightmare that doomed many companies. If they fixed one piece of their code – something else broke down.

The solution was simple – all the little pieces had to keep functioning the same way. Mathematically, they had to perform functions, operations that never changed (were immutable). The data could flow through them, from one function to another – and would emerge in the end, as the final result.

This is so different from the usual programming style, most programmers will not use it. They insist on doing things the old way – no matter what. I have worked with these guys (and gals) and I saw this with my own eyes. They want control over their code, to do with as they please – regardless of how this affects others.

I am learning F#, a language Microsoft supports. But to do this I needed a Windows 10 computer. A bought a cheap one, for $180, but it is now in the trash – as I await the shipment of a new one costing $220.

Here I am in rural Costa Rica – but with a new laptop and a fast Internet connection. I get videos every day – giving me the latest software news – some of which are crazy.

I have to discipline myself, to only pay attention to a few of them.

Some things are Much Harder in Windows 10

Install WordPress for Windows

In my Windows 7 laptop, WordPress runs easily inside a Chrome tab. But with Windows 10, it has to be installed as a separate program – able to run on its own. The download for this is the longest I have ever experienced – and I have experienced a few.

It has to have its own database, so the download includes one by Microsoft – and this has to be installed also.

Altogether, a big deal.

How Microsoft Lost its Dominance

Back in the Nineties, Microsoft was a badass company – determined to eliminate all its rivals. Its business practices were so ruthless, practically every state was taking it to court – except the Feds, who talked the states into letting it take on Microsoft. It went through the motions of doing this, but eventually did little.

Other companies, Netscape and Sun Microsystems (both fine companies) tried to take it on – but failed.

But a new batch of companies – Google, Amazon, and Apple – succeeded.

Google led the way, by inventing a new service – Search. That quickly became indispensable, and generated huge revenues for Google when it added Advertising. It was in business to stay – and there was nothing Microsoft could do about that.

It invented its own search, Bing, but Google countered with a browser – Chrome, that soon took over. Google also took advantage of a new movement – Open Source, and provided much of the software (for free) that made AI such a force in the world. In a word, Google was Open, and forward-looking, and Microsoft was Closed. The world took no notice of this – it understands nothing about Software – but it should have.

Microsoft did respond – by becoming more Open with new versions of .NET, and new a new language, C# (using ideas taken from Java) that were cross-platform (that could run anywhere). It was forced to become better – and it did so – claiming it was its own idea all along.

I am now learning a new language, F#, that Microsoft supports – that it invented, in fact. Its documentation for this is excellent – it is now the Good Guy, helping everyone else. Using new versions of Visual Studio, its excellent IDE. It now wants you to get in bed with it.

People often ask me for my opinion about Windows 10, so here it is – Microsoft started by offering free upgrades to Windows 7 and 8 users. This exposed how buggy it was – Microsoft was using them to test its software. Not very ethical.

As Windows 10 improved, Microsoft dropped the free upgrade, and started charging for it. Windows 10 was actually a whole series of products, that kept getting better. But the best way to get it, was to buy a new computer with Windows 10 on it, There are some good laptops for about $200 that have this – but Microsoft wants you to spend $2000 for one. This is the bad old Microsoft again, intent on screwing everyone!

Make Your Own World, in Your Own Cloud

People have always wanted to be demigods, ruling over their very own worlds – where other people could not intrude.

This is now being done routinely – in the Computer Cloud. I even have one myself in the Amazon Cloud – where I can do anything I want, to my own world – that can be a big as I want (because space there is so cheap).

Except I have little idea what is going on there – and even less of an idea how to make this private world work part of the larger world.

This is not true, however, of the powerful new companies who reside there – who understand that world, because they helped create it. They know how to coordinate this new world with the old world – and take over large parts of it.

Much of its money, for example.

Kid Stuff

IP Addressing in Your VPC

IP addresses enable resources in your VPC to communicate with each other, and with resources over the Internet. Amazon EC2 and Amazon VPC support the IPv4 and IPv6 addressing protocols.

By default, Amazon EC2 and Amazon VPC use the IPv4 addressing protocol. When you create a VPC, you must assign it an IPv4 CIDR block (a range of private IPv4 addresses). Private IPv4 addresses are not reachable over the Internet. To connect to your instance over the Internet, or to enable communication between your instances and other AWS services that have public endpoints, you can assign a globally-unique public IPv4 address to your instance.

You can optionally associate an IPv6 CIDR block with your VPC and subnets, and assign IPv6 addresses from that block to the resources in your VPC. IPv6 addresses are public and reachable over the Internet.


I am trying to use AWS (Amazon Web Services) to build a computer in the sky (in the cloud, that is). Amazon has facilities that make this easy, for most computer languages. But I am using F#, an important, but uncommon language. Which means I have to learn the nuts and bolts of how AWS works – some very complicated machinery, believe me.

In my opinion, AWS needs to add another service – that would help their users to coordinate the work they do inside AWS, with the work they do outside it. They could organize their work inside, any complicated way they wanted – and make this fit into the world outside it, that is organized differently. This is no small matter – messages and information, have to go both ways easily – between two different worlds.

The Cloud is the ultimate software technology – and making a good one is more than most companies can handle. Software has advanced so rapidly in the last 15 years (1990 – 2015) that whole industries (the Financial industry, for example) cannot keep up.

They need specialists who can understand software at a low level – and executives that can understand software at a high level. Both are in extremely short supply – and this is not likely to change anytime soon.

One project I would like try, if I were much younger – would be using software to analyze, and assist in the legislative process – in the writing of laws.

Every country in the world, is now a Democracy – with a Legislature that passes laws, very complicated ones – hundreds of pages long. No one can understand them – but the Computer is an expert at this – understanding Big Data.

It could even make models of these laws that ordinary people (politicians, even) could understand – and tweak, here and there, to see how things could change.

It could not predict how these laws would affect the people they were designed for. But they could be put into effect, and monitored closely to see the changes they caused. Make a few changes, and if they work – make a few more.

Societies would have to be built, however, with self-awareness built into them.

This is not a new idea, and not a particularly difficult idea – but is strongly resisted by some important people – who would prefer to remain unknown. An increased awareness on the part of the general public would smoke them out.