On the other hand, I still fondly recall how my mind was blown by the concepts I learned when I first learned programming. It was my senior year in college and I picked up the book, the New C Primer Plus, 2nd Ed. by Mitchell Waite and Stephen Prata while Christmas shopping in 1995. I stumbled across it in Circuit City on the bottom shelf below all the shrink-wrapped software. I recall that it was sitting all alone on the shelf–all the other things around it had been snatched up by the Christmas rush. It was a throw-back to the time when learning how to use a computer still meant learning how to program it, but most people rushing through Circuit City had overlooked it. At the time, people told me to learn a newer language like Java or Visual Basic, but I had become fascinated by how computers work, and wanted to learn the gritty details of a low-level language like C. I spent the next 3 weeks reading 700 pages of code examples in utter fascination. The book taught me dozens of new concepts. At the end of each chapter, there were exercises to do as homework. Since I didn’t have a C compiler, I wrote out my code examples with pencil and paper, not really knowing if they worked or not, but simply enjoying what I was learning.
The open source license is great for marketing and helps attract new users. I love the fact that ProcessMaker allows anyone to change the code, because it gives me great flexibility when I answer people’s questions on the public forum, which I have maintained since 2009. When people encounter a bug or need a new feature, I can tell them to go to line 1205 in workflow/engine/classes/class.pmFunctions.php and change the source code to fix it. I try to answer people’s questions on how to hack the source code and develop plugins for the software, but I’m not a core developer, so my knowledge is limited.
When Firefox was introduced in 2004, it was designed to be a lean and optimized web browser, based on the bloated code from the Mozilla Suite. Between 2004 and 2009, many considered Firefox to be the best web browser, since it was faster, more secure, offered tabbed browsing and was more customizable through extensions than Microsoft’s Internet Explorer. When Chrome was introduced in 2008, it took many of Firefox’s best ideas and improved on them. Since 2010, Chrome has eaten away at Firefox’s market share, relegating Firefox to a tiny niche of free software enthusiasts and tinkerers who like the customization of its XUL extensions.
According to StatCounter, Firefox’s market share of web browsers has fallen from 31.8% in December 2009 to just 6.1% today. Firefox can take comfort in the fact that it is now virtually tied with its former arch-nemesis, Internet Explorer and its variants. All of Microsoft’s browsers only account for 6.2% of current web browsing according to StatCounter. Microsoft has largely been replaced by Google, whose web browsers now controls 56.5% of the market. Even worse, is the fact that the WebKit engine used by Google now represents over 83% of web browsing, so web sites are increasingly focusing on compatibility with just one web engine. While Google and Apple are more supportive of the W3C and open standards than Microsoft was in the late 90s, the web is increasingly being monopolized by one web engine and two companies, whose business models are not always based on the best interests of users or their rights.
There are a number of pernicious trends in the tech industry that need to be opposed. Over the last decade there has been a massive shift toward planned obsolescence, ever since Apple introduced the iPhone in June 2007 and the Macbook Air in January 2008 with sealed cases, non-replaceable batteries, RAM and SSD soldered on the motherboard and a lack of expansion slots.
Apple’s designs have been widely copied by the consumer electronics industry, so that it has become much harder to fix and upgrade electronics. Most ultrabooks, Chromebooks and 2-in-1 convertibles being sold today have copied Apple’s Macbook and no longer have replaceable batteries. Even brands such as Lenovo’s Thinkpad and Dell’s Latitude which are marketed for their fixability and ease of maintenance are now offering models such as the Thinkpad T470s and Latitude E5450 without removable batteries. Continue reading
I have been the maintainer of the ProcessMaker forum since June 2009, which has generally been an enjoyable experience, but lately we have been inundated with spam. I usually don’t mind deleting the occasional spam from the forum. In fact, I find it very interesting the tricks that the spammers use to fool me into thinking they are legitimate posters. Usually they are very subtle, so it doesn’t particularly bother me if a couple posts of spam slip through undetected.
The usual trick is to post something that looks like a legitimate post the first time. The more skilled spammers use a script to analyze the previous posts on the forum and construct a new post which merges the previous content. It often comes out as gibberish, but some of these scripts can actually generate something that appears to make sense. After the first post has passed the censors, then they sneak in a link in the second or third post.
When I first learned programming in the mid 90s, everyone told me to learn Java, since it would be the wave of the future. Java imposes a performance penalty compared to traditional compiled languages like C, C++, Fortran and Pascal, because its code is translated into bytecode that runs in a virtual machine. The feeling at the time was that the extra processing and memory required to run the Java virtual machine would make little difference in the long run since computers were forever getting faster and more powerful. A few more iterations of Moore’s Law would obviate the need for compiled languages, since the difference in speed would soon be imperceptible to most humans.
Java was considered the best language, because it was designed to “write once, run anywhere,” which seemed wise considering how the world was moving from minicomputers with terminals to networked personal computers (PCs). When I first arrived at university, the entire campus ran on VAX terminals, although some students brought their own PCs to use in their dorm rooms. By the time I graduated 4 years later, almost the entire campus had switched to networked PCs. I had a job staffing the college computer lab and I fondly recall the excitement on campus when PCs replaced the monochrome VAX terminals with their pea green screens. There was a raging debate at the time whether PCs should use an operating system from Microsoft or Apple. My friends in the computer lab predicted with all the confidence of sages that Java was the future since it could be used to create desktop applications that would run in Windows 95, Mac OS 7 or even Solaris. Everyone knew at the time that desktop applications running on PCs was the future of computing and we all wanted our software to be able to escape the clutches of Microsoft, who was the geek’s great Satan.
Most of the time Linux “just works,” but sometimes all the pieces don’t play together nicely. After installing the Rust compiler, I couldn’t get it to run without typing out the full path to the program. If you are coming from the Windows world, this is the expected behavior because Windows is a brain-damaged OS, but in the Linux/UNIX world we expect commands to work everywhere without including the path. So I filed a bug report with the LightDM display manager and with the Rust compiler to ask them to set the PATH correctly:
My prediction is that LightDM will ignore my bug report (since it is developed by Ubuntu which tends to ignore bug reports) and the people at Mozilla who develop Rust will say, “It’s not our problem if LightDM doesn’t want to conform to the convention of putting session configuration in $HOME/.profile.”
And I will get annoyed that I just wasted an hour of my time tracking down this bug and reporting it, rather than getting some extra sleep that would make me a much happier camper tomorrow.