Category Archives: Technology

Apple to Open-Source Swift Programming Language

At Apple’s World-Wide Developer’s Conference (WWDC) this week, Apple made a bunch of interesting announcements. Everybody seems to have focused on their Apple Music announcement. Yawn. This was their DEVELOPER’S CONFERENCE. As a “developer”, I’m not sure what the big deal is behind that, although it’ll certainly appeal to a lot of “regular Jane’s and Joe’s”.

But as a DEVELOPER, the most significant announcement I heard was this: Apple announced Swift 2.0, and that they are making the Swift language and programming platform OPEN-SOURCE. WOW!

Why is that significant? Because it turns out that Swift has been experiencing the fastest up-take of any programming language and platform in the history of programming! Not only that, there are more people learning Swift today than any other programming language, and it’s not even being formally taught in any schools yet. WOW!

Check this out:

June Headline: TIOBE Index for June 2015: Objective-C to Swift migration process at full speed.

For the first time ever, Swift entered the Top-20 list of TIOBE’s programming languages list, after less than one year since it was introduced to the world. This is AMAZING! I’ll probably start spending some time learning Swift because it’s growing so quickly.

As an aside, I’m seeing ads for Swift Devs who’ve got 3+ years of experience with Swift, which is indicative of how silly so many job reqs have gotten. Who the heck writes these ads? Swift is barely 4 years old, and nobody but the dev team inside of Apple has been aware of it for more than 2 years. But, hey, you can be assured that there are plenty of folks applying for jobs claiming they’ve got 3+ years of Swift experience! The sad part is, you cannot get interviewed by these companies if you don’t check the boxes with experience that they’re looking for.

(My favorite language, Delphi/Pascal has also moved up in the list. Between Delphi and Pascal, they’re at 2.7%, which is just below PHP. I don’t see any evidence of people hiring more Delphi developers, but this index suggests it’s happening … somewhere.)

Tesla’s New Battery Biz + The Future of Energy in America

I noticed this article on redef.com:

Tesla Isn’t An Automaker. It’s A Battery Company

I tend to agree with this for several reasons. Here’s my thinking.

The use of batteries in our power grid has some HUGE economic potentials and benefits. They’ll fundamentally transform our utilities from businesses built around power generation to business built around power distribution and management, and they’ll significantly reduce the need to build any more power plants for a couple of decades, if ever. (I say “if ever” because as renewable power sources come online, they’ll offset the need for centralized power generation at a rate similar to the adoption of batteries.)

Here’s why:

Continue reading

Outsourcing

A friend of mine recently suggested I check out ODesk and Freelancer as a way to market my Delphi skills. I tried to sign up on ODesk once and they have you take this so-called “proficiency test”. It seemed to me like a bunch of “trick questions” designed by folks more interested in your “hacking” skills than whether you understand programming design and efficiency. About 1/3 of the way through, I quit and sent a nasty email to their support desk. I haven’t been able to login since then.

There’s a small middle-tier php app I’ve been trying to get developed since August of last year.
It’s not all that complicated, in my mind. Continue reading

I’m an Embarcadero MVP!

I was recently nominated to become a member of Embarcadero’s MVP program (click here for more info), and was invited to join last week! WOO HOO! It’s truly an honor to be recognized for the technical chops I’ve developed around Delphi  — I’ve been working with it since it was released nearly 20 years ago now. In fact, Delphi’s 20-year birthday is coming up on Valentie’s Day next month. Continue reading

Uber, Lyft, and Market Disruptions

To make a little extra money, I decided to check out Uber and Lyft, a couple of ride-sharing services here in Phoenix. I’ve been driving for Uber since the beginning of September, and Lyft since the beginning of October. Overall, I spend about 20 hours driving each week and typically pull in over $400 net (after they take out their 20% commissions).

I find these services fascinating on several levels. Continue reading

Apple Refresh Cycles

About 18 months ago I bought a “fully-loaded” MacBook Pro from the Apple Refurb store. It’s a 15″ retina mid-2012 model with 16GB RAM, 768GB SSD, and a 2.7 GHz quad-core i7 chip. It kicks ass!

I was wandering around Fry’s Electronics the other day, which I don’t do as much as I used to, and I noticed there are lots of these “4k” monitors starting to appear. Their prices aren’t very good, typically over $500 still. But I was curious how many 4k monitors my “fully-loaded” MacBook Pro can handle.

Continue reading

The New Apple Watch — What’s The Big Deal?

Someone posted a rant on FB about why companies like Apple insist on focusing their might on such trivial and non-essential products like the Watch that they just announced yesterday (9/9). There are two contexts this person is missing, IMHO.

First of all, when the economy takes a nose-dive and average disposable income drops significantly, you might as well be asking why cosmetics and gadgets targeting people’s egos takes less of a hit than things you might consider more significant to peoples’ basic survival instincts? Apple seems to thrive in such an environment. So what? Ego-driven marketing is a huge business.

A better question to ask is Continue reading

Interacting with Forms in Delphi – Part 4: Initialization Methods

In the previous post, we examined four traditional ways of initializing objects such as forms in Delphi. There are two more approaches we’ll examine that aren’t used as much but result in much less coupling than the others: initialization methods, and call-backs. In this installment we’ll look at the former, and in the next we’ll look at the latter.

Remember that we’re discussing how to initialize objects here, including forms. It’s not always the case that you have data available in an easily accessible database table, so we’re doing this manually, which is not all that uncommon. In fact, I maintained a rather large application a while back that used a NOSQL database where we had to do the data queries outside the forms and pump all of the data into and out of the forms exactly like this, which is where I got the inspiration for this series of articles. In that code, I found virtually all of these approaches used to interact with their forms; there was not a lot of consistency throughout the project. (Actually, this is all leading somewhere inasmuch as I hope to present a simplified way of interacting with forms that can reduce the amount of “plumbing” code required to get data in and out of them.)

Continue reading

Interacting with Forms in Delphi – Part 3: Initializing Forms

In the last post we started discussing selection forms and I stopped at the point where we were encountered a dilemma: the form is constructed with the form.Create() method but there’s data that’s not loaded into it yet. So how do you get the data into the form?

I’d like to take a slight detour for a minute and discuss something called dependency injection.  Wikipedia defines dependency injection thusly:

Dependency injection is a software design pattern in which one or more dependencies (or services) are injected, or passed by reference, into a dependent object (or client) and are made part of the client’s state.

Any time you need to pass data into an object, it represents this design pattern. Some folks might quibble about whether the dependencies can only be “services”, or whether they need to be “passed by reference”. For this discussion, it doesn’t really matter — the point is, you have some data (fields, objects, or services) that needs to be injected into the object (a TForm in this case) and it affects the state of that object. When a form opens and you want the user to be looking at a bunch of fields already populated with data to select from, that is the initial state of the form.

So the question is, what’s the proper way of interacting with the form so it is initialized properly when the user sees it? Let’s look at our options within the context of the dependency injection pattern. Continue reading

Chrome Extension: The Great Suspender

Anybody who uses Google’s Chrome browser needs to download this extension NOW: The Great Suspender. As you can see below, they tout how it reduces the memory footprint of Chrome. I don’t care about that. What it REALLY DOES is tells hidden tabs to STFU!

If you’ve got pages open that have lots of ads and flash crapola on them, they just keep going and going and going … they suck the life out of your CPU and nobody is even watching them!

When this extension “suspends” a page, it’s as if the browser window is closed and replaced by a simple screenshot. It’s not always a good screenshot, which is fine by me. The point is, the page effectively goes to sleep once it’s suspended. All you have to do is click it and it reloads.

Also, if you’ve ever had a bunch of Chrome windows open with lots of tabs on them, and your machine crashes, when you re-open Chrome there’s a button that say it was shut-down prematurely and asks if you want to reload all of the pages. If you click it, it can totally swamp your machine for several minutes while it’s reloading everything.

With this extension active, the suspended pages are all reloaded in a fraction of a second. So restoring a bunch of Chrome windows and tabs happens very quickly.

This plugin is a Godsend if you work with tons of open windows and tabs in Chrome. Seriously. Get it. It’s free,too!

BTW … DOES ANYBODY KNOW OF A SIMILAR EXTENSION FOR SAFARI?

2014-08-14_12-41-37