App Design Blog

Developing free software for free computing

WhoopDeeDo!

Enjoy.

If this is the voice of America on support of the right of everyone to have guns, then Americans need to look around for someone a teeny bit more credible.

A Call to Freedom

This, from the Free Software Foundation:

Microsoft has shelled out a mind-boggling estimated $1.8* billion to convince the public that it needs Windows 8. Why the record-breaking marketing deluge? Because a slick ad campaign is Microsoft’s best shot at hiding what Windows 8 really is; a faulty product that restricts your freedom, invades your privacy, and controls your data.”

Close Windows, Open Doors

I heartily endorse libre computing for all. Computing should be available to everyone, not just to those who can afford it. Libre (freedom of mind and thought and freedom from corporate control) Software is a step in the right direction. Why? Because the exchange of ideas is what not only fuels innovation  but offers opportunities to the financially disadvantaged. Free computing is everyone’s right. That is what the Internet is for — the freedom of thought side of things, anyway — and what the Free Software Foundation and Libre software is about:

As our society grows more dependent on computers, the software we run is of critical importance to securing the future of a free society. Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us.

The Free Software Foundation is working to secure freedom for computer users by promoting the development and use of free (as in freedom) software and documentation — particularly the GNU operating system — and by campaigning against threats to computer user freedom like Digital Restrictions Management (DRM) and software patents.”

We do have choices. This is a freedom, one to preserve, to cherish, to be watchful over, since there are those who would take it away if we’re not careful. Chose Libre Software and free your computer and your mind.

ZDNet being weird

Another post filtered for “profanity” – I defy you to find profanity in this!

This article points at concepts I feel very strongly about:
“Is there an unresolvable difference in ideology between those who consume and those who develop open-source and free software?”
Indeed there is! The mindset of the average consumer towards free software is *identical* to how they feel about proprietary software. They have expectations and behave like the developer owes them something if expectations weren’t met. It’s a consumer mindset and jeez, people, what is with consumers, anyway?
Just read all the angst and aggro surrounding the development of the most recent sortie of GIMP to get an idea.

No one gets “free as in freedom” and to be honest, no one gives a flip. And so the disconnect is very, very real. I completely agree with the author that Richard Stallman’s discussions on the ethics behind the FSF movement needs to be required exposure (so one at least *has* a clue) prior to using *any* software that isn’t proprietary, free (libre) or open-source, doesn’t matter.

I’ve been a nurse for over 30 years. I’ve spent my free time learning to write code in FoxPro, Visual Basic (for Applications), Python, php and javascript. I’ve collaborated with a *now* MS MVP on a FoxPro product (vertical market software that, although the target company chose solutions that made our product irrelevant, still has tenacious users who won’t give it up because it did things *their* way!!) and have since created Excel solutions for rostering and asset management using Excel VBA. The latter (Excel stuff) is all open-source and free – never got paid for my time for the rostering tool and now refuse to consider the asset management VBA app as anything but “Free Software”… I’m spending my non-work hours to develop it not just for Excel but there is a Android component under development as well. I’m saying all this to illustrate that I’m not approaching no-cost/free(libre)/Open-Source from a greedy: “hey, look what I can do and this isn’t costing me a dime” standpoint… I know software development costs money, my money. MSOffice cost me money, Windows cost me money, my broadband connection, Basic4Android, FoxPro, etc. all cost me money. So, why am I doing it? why do I refuse to charge for this? Because, philosophically, I *do* align myself with Richard Stallman’s view on Community… and this is my contribution.

Oh, and I do contribute (donations) to Linux Mint development, Blender3D development and a number of other no-cost software development groups to further their cause.

This is the movement that I believe in and want to promote. Not to undermine the proprietary software developer’s offerings, but to offer a choice for those who feel the same way I do about Community (vs Big Business). It is the core of this movement that Ballmer was referring to as a cancer, and whilst the analogy has negative connotations (disease) the effect is indeed aptly described.

But consumers will never get that. So, those of us who do have that Community Spirit Richard was promoting need to develop thick skins towards those inappropriate consumer attitudes. That disconnect won’t ever change: it’s not human nature. As Ubuntu developers were fond of saying (paraphrasing): “Hey, it’s no-cost. If you break it, you get to keep both pieces…” or “What do you want? your money back?” ;-)

A post on ZDNet…

… where are the profanities?

“”Desktops will never be touch devices because of the smudgy/sticky finger problem mentioned in the article and because nobody wants to use a computer all day where they’re having to use an outstretched arm.”
We use Windows XP with touch-screen at work, doing patient-care documentation in post-operation recovery. Several of our staff have come down with shoulder issues directly linked to long-term use of these screens (repetitive strain injuries with outstretched arms typing on a touch-screen). We are now investing thousands of dollars for special arms that allow movement of the screen to a more-accessible location of the screen in hopes of diminishing the rate of injury incurred by the use of these devices.
I seriously doubt the average user is going to seek a similar solution when they start having repetitive strain injuries – the touch-screen for home users will quickly follow the three-dimensional television. And cleaning the smudges left over on a screen… there are plastic guards for keyboards that are infinitely easier to clean than the special care screens require… *any* screen.”

Poser and Freedom

Just sitting here thinking: been following the Poser rumours thread over at Renderosity, and am glad I have Pixel Nook to come to say what I really think. Traci’s generosity and all of that group’s creativity got me thinking about our community… I mean, the greater Poser Community in general, not just us.

I was going to say this on that thread, but I think tempers are a bit volatile there at the moment.

When you think about it, back when Diogenes was putting together the whole figure-WM concept and developing absolute genius figures – some of which blew the originals out of the water – what *really* drove the whole effort was: freedom. Freedom to improve what’s there, freedom from an organisation dictating what or how a figure should behave or be used, freedom of movement.

Freedom. Seems no one got that.

In the Windows world, there is something incredibly sacrosanct about proprietary and intellectual-property. No clue why – I really think it’s those bloody Gates letters to hobbyists. Before then, computing was about sharing and growth. After him, it was about money. But still, sharing lives on. In the Poser community alone, we’ve got:

Bagginsbill: *gave* the community Matmatic.

So, no one got that. No one got what this could do for Firefly, for shaders, for materials.

Then, SnarlyGribbly gave the community Pose2Lux. Now, we can completely circumvent Firefly and do something totally incredible with our Poser creations in a superior renderer.

Oh but wait, it was free.
“Couldn’t be of much value, then could it?”

Then, Diogenes gave us: V4-weight-mapped. Now, this has GOT to be the game-changer, the one that made the difference. All the renders proved it: the mesh deform was vastly superior to what had come out of … um, the original developer’s design.

Once again: free.

Then, EzSkin. The list of incredible gifts to the community goes on and on.

Free (as in: no-cost) is a stigma. Too often, for too many, “no-cost = free” means “no-value”. This is a sad-sad-abysmally-sad thing. The whole Poser concept *originally* was all about Poser artists creating amazingly brilliant add-on stuff for NO-COST, as a give-back to the community. That is Poser’s heritage. But what happens these days? Too many Poser users evaluate those gifts based on what they cost and thus deem them of no value.

Make Sense?

It’s about the people. The Constitution of the United States is about the people. And it is all consistent. So, the Second Amendment needs to be read in the context it was written in.

The following is the text of the Second Amendment to the U.S. Constitution:

A well regulated Militia, being necessary to the security of a free State, the right of the people to keep and bear Arms, shall not be infringed.

As said Lee Z. on TheNation.com: “The 2nd Amendment is about a “well regulated militia”, not about uprisings against the constitutional government of the United States. It was brought in as a way of providing for defense against the British and Native Americans, given that the new nation could not afford, and was fearful of establishing, a standing army (they saw it as a threat to freedom).
The idea that the US Constitution was designed in any way to facilitate uprisings by the citizenry is a gross distortion of the truth, When confronted with Shays’ Rebellion, the US did not defer to it, but suppressed it. The same occurred in the larger Rebellion in 1861, also suppressed. The same would occur with any outburst of citizen gun play “justified” by a claim that the US was a “dictatorship”.
Should the US become a dictatorship, individuals with guns would not be effective in resisting or overthrowing it. This has been shown time and again in wars, where lightly armed fighters are easily overcome by modern armies. Guerrilla warfare can certainly be effective, but it requires wide popular support, and — crucially — allies with modern forces that can aid the guerrillas and deter the guerrillas’ opponents from using all the force at their disposal.
The likelihood that a citizen uprising manned by gun owners would be widely popular in the US is zero. The likelihood of such an uprising finding allies outside the US that could deter the US from crushing the uprising is nil. The only hope for such an uprising would be if the US armed forces went over to their side — very unlikely, but possible. If it did, there would be no need for the uprising, because the armed forces could overthrow the government without much problem (as in Egypt). If the armed forces remain loyal to their chain of command, they would wipe out the uprising in short order. In my opinion, the US armed forces would remain loyal, as they have (with a partial exception in 1861) since the foundation of the Republic.
So the idea of a freedom loving citizenry rising up with their handguns and hunting rifles to “restore freedom” is a ridiculous fantasy,capable of entertaining a fringe of gun lovers and kooks, but completely alien to reality. Some might call it treason if it weren’t such a joke.

 I rather think that if the writers of the second amendment realised that their words were going to be fuel for special interest groups to promote their lethal business ignoring it constituted a profound threat to the first statement of the Constitution itself:

We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.

…insure domestic Tranquillity…
…provide for the common defence…
…promote the general Welfare…

… they would have at the very least thought twice about it. 90 guns for every 100 Americans has not shown itself to be very effective to securing any of those rights for 30,000+ shot-dead Americans each year, who in some cases are innocent children.

But then, the writers of that amendment has this in mind, didn’t they?

03. A New Environment

Where to get Stuff

I’m only going to touch on GNULinux distribution choice and installation and how to do dual-boot briefly. I chose Linux Mint 13 Maya 64-bit because the interface is really very similar to what I was used to in Windows 7. I know that’s not a particularly forward-thinking reason, but I don’t want to spend a lot of time learning a new interface for no real reason, at least, none has as yet presented itself. And when I show it off, those familiar with Windows will find it less “offensively different”… that same offence I feel looking at Win8, for example. Different for Different’s Sake. It takes a while to develop a workflow on a foreign device like a computer: there’s no point to changing the workflow particularly if changing fails to help you work more efficiently.

A lot fail to get that.

Any computer running Windows can run GNULinux. Some computers — recent ones — running Windows 32-bit can most likely run GNULinux 64-bit, which allows you to use memory (RAM) better. You can have Windows and GNULinux installed on the same computer… at boot, you’ll be presented with a little menu which will offer the choice of OS to boot into.

Install GNULinux Dual-Boot

If you do decide to install GNULinux on your PC, you will want to:

  1. Back up your data in Windows
  2. If short on drive space, remove software you never use (this will speed up Windows)
  3. Use CrapCleaner to get rid of the rubbish (this could speed up Windows)
  4. Deactivate and delete (temporarily) the paging file, then use a good defrag tool to defrag the hard drive
  5. Restore the paging file
  6. Download Linux Mint or the GNULinux of your choosing… I’d chose one that has a lot of support
  7. Either make a bootable DVD or thumb-drive
  8. Install your distro

The install itself is a no-brainer. Well, almost. I have yet to have a successful install that didn’t involve manually setting the boot point and the swap partition (to equal what you have as installed RAM) — those instructions are for Mint 11, but they apply equally well for 13 (Maya). Your distro will have instructions that will walk you through it if you decide to go with something other than Mint.

To your surprise, a lot gets installed with the Operating System in most of the major distributions. If you go with Ubuntu or Mint, there will be a Synaptic Package Manager or Software Center that acts pretty much like an app store: you install 99% of what you’ll ever need from there. That will include Libre-Office, GIMP (don’t get 2.8x, you won’t like it) and a ton of other stuff. GNULinux will find your Internet connection automatically, it will find your printers even if they’re on your network and automatically install the appropriate driver for them in seconds. You’ll be blown away by how incredibly user-friendly, intuitive this whole process is.
And you’ll come to actually like Terminal (like the DOS prompt in Windows)… for 99.99999999% of what you ever do, someone’s done it before and will have detailed instructions you just copy and paste. [CTRL] [C] and [CTRL][V] don’t work in Terminal, but right-clicking and selecting ‘Paste’ from the drop-down menu will work fine.

Final note: *IF* this page actually generates traffic and *IF* someone actually follows through with these suggestions and *IF* they run into issues, the intrepid can always reach me at robyns-veil (sans dash) at my google-mail account with queries… time permitting, I’m happy to help.

Install SQLite3

You might as well get SQLite Studio whilst you’re at downloading SQLite3. You will notice that — for what it’s worth to you — you can download the source-code for SQLite. This is actually important: not in a practical sense, but from the standpoint of what this site is about: freedom. If you have the source, you can improve it (if you have the skill to do so, of course, I don’t) and pass it on. With non-libre software, this option does not exist, even if the source-code is available, which it wouldn’t be, but anyway: it’s all in the GPL and what you’re legally permitted to do with the software that counts.

By the way, you don’t have to download at all – just install from Synaptic package Manager:

Img004

All dependencies will be installed as well, and any time an upgrade comes out, the software will be updated along with your operating system… this is all automatic. I don’t even have to *think* about whether I have the most recent version of SQLite3 – I already know I do.

Gotta love GNULinux!!

I didn’t see SQLite Studio in the repositories, so I think that one you’ll have to download and install the old-fashioned way.

 

Gambas Almost Means BASIC!

 

Now that we have our data storage sorted, let’s look at the program that is going to replace Excel and VBA. In choosing Gambas, I went the back route, the expensive way… the wrong way, really. I wanted something that was not going to be a massive learning curve, initially. Q7Basic promised that… very similar syntax, flexible environment, you can compile to Windows, Mac and GNULinux executables… how good was this! And the price was really quite reasonable.

However, I’ve run into issues. Suffice it to say that for my purposes at least, Q7Basic is not going to serve my needs well at this point in time, as I’m writing this, end of year 2012. Perhaps in the future, but not now.

Due to communication issues after purchase, I decided that PureBasic was a better option. It is… however, the syntax (how the language looks and acts and all that) is a significant departure from the VBA I was familiar with. yes, you could build incredibly robust, powerful apps and you’d have complete control over everything, but the learning curve was just a bit steep. But yeah: I bought the licence here, too.

So, two apps, neither of which were really going to suit my purposes for the time being. I do have to emphasize that neither of these solutions are bad ones, just that neither suited what I wanted to do at that point in time.
And then, I discovered Gambas.

At this point, Gambas compiles only to GNULinux.

02. Discovering the Limits

Limits of Excel as Data Tool

People do use tools not specifically designed for the task sometimes when the best tool for the task is not available or — in my case — not entirely to be trusted. I’m sure my distrust of proprietary software is slowly becoming apparent — perhaps too much so — and I might have to edit these pages to clear all that stuff out, eventually. In any case, this is why I used an Excel spreadsheet for database use. Well, one reason, anyway: we don’t have access to Access at work.

But now, we’re going to discover that using a flat-file database (which is essentially what a spreadsheet is) has its limits. The second page of data we copied to sheet is a list of our transactions. On this sheet, that first column — the transaction numbers — is made up of unique numbers. On the first sheet, that column has duplicates, since one transaction can involve a purchase of more than one item.

In order to easily manage a one-to-many record set, we’ll need a relational database. Yes, it can be done in VBA code, but here is where another shortcoming of using Excel versus using a RDBS (relation database system) comes to light: SQL. SQL stands for ‘Structured Query Language’. Excel doesn’t support it: most RDBSes do. And when you’re doing reporting, SQL makes your life SO much easier!

So, we’re going to make a change, but it will be bigger than it first appears. For reasons that will become increasingly apparent to anyone reading these pages, it is of utmost importance to me that I own freely what I will have created. So, I wish to create this in software — and in an OS — that supports that freedom. I will not be bound by some EULA that can dictate — at some point down the track, as Instagram users have discovered to their horror — what is to be done with what I create. Here are the proposed steps to take:

  • Chose a libre Operating System, i.e., some flavour of GNU/Linux
  • Continue development in the same essential Language — BASIC — in GNU/Linux
  • Use a stand-alone data container, again, something libre — I chose SQLite

For OS, I run Linux Mint 13 Maya 64-bit. On the issue of ‘free’ versus ‘libre‘ I have addressed it thus: I have donated to the Linux Mint project and will continue to do so. Whilst they are not strictly GNU(freedom)-compliant in that they do include some non-free software in their distro, at this point it is a significant step away from the malware that is Windows. Nothing reports back to the mother ship.
For software, I have purchased the dual-platform version of Q7Basic and the 3-platform licence for PureBasic, neither of which I’ve been using at all. Instead, I’ve been developing in Gambas which is free. To this effort I have donated as well.

All this to say: I have no intention of perpetuating the notion that I’m promoting free software as to mean ‘no-cost software’. That is not the meaning of ‘free’ in this context, which is why I use the term ‘freedom’ or ‘libre‘ to differentiate and clarify that I’m espousing a cause, not being a cheapskate.

The fewest get that.

Preparing the Data

After the date conversion has been done to both spreadsheets — Itemised Purchases and Transactions — it’s time to get them ready for export to csv. So:

  1. Copy these sheets each to a new workbook
  2. Remove the columns that do nothing: the ones with ‘Reset’, ‘Complete’ or ‘View Order’ and the old, pre-conversion dates.
  3. Check there are no commas anywhere in any of the fields, which will stuff up the import to SQLite – replace any commas with a dash ( – )
  4. Save to .csv, comma delimited.

Then, in the Transactions ‘table’ (which is what they’re going to be) I’ll have 3 fields:

  • PurchaseOrderNumber (unique values)
  • Amount
  • DateOfPurchase

…and in the ItemisedPurchases table I have 3 fields as well:

  • PurchaseOrderNumber (NOT unique values… there are some duplicates)
  • ItemName
  • DateOfPurchase – removed

The Date of Purchase field is actually redundant in the Itemised Purchases table, so I’m going to remove it.