Professional Software Engineers

Food for thought: 

Last October (2021), the White House Office of Science and Technology released an RFI to gather research to develop an “AI Bill of Rights.” 

WIRED: Bill of Rights AI

Similarly, the government of Chile passed a law in 2021 establishing “the rights to personal identity, free will, and mental privacy.” Like Thanos, the regulation of Privacy & Big Tech is…inevitable. However, we need to revisit an even more important discussion, one that in my option, cuts to the heart of “the news headlines”.

Should Software Engineers be required to obtain a license, which gives them “permission to practice”? For example, to receive a Professional Engineer (PE) license, “an individual must complete a four-year college degree, work under a Professional Engineer for at least four years, pass two intensive competency exams and earn a license from their state’s licensure board.”

State and Federal laws require civil engineers, doctors, lawyers, etc., to be licensed. Why? Because doctors, lawyers, and engineers perform activities deemed dangerous to individuals or the general public. For this reason, law, medicine, and engineering require licensed professionals to adhere to a Code of Ethics.

Can software algorithms cause harm to individuals? We should talk about this, but Facebook’s own internal research seems to say ‘yes’:

WSJ: The Facebook Files

Can mortgage loan algorithms be written poorly and cause harm to the public? There is growing evidence that seems to say ‘yes’: 

The Markup: The Secret Bias Hidden in Mortgage Approval Algorithms

Is it concerning that [insert name of company or institution] ‘s website accidentally exposed their customers’ names, SSNs, and PHI this past [insert day of week]?

For reference, here is a code of ethics from the Association for Computing Machinery.

ACM Code of Ethics

Professional Software Engineers…that could be a thing.

Random Thoughts about Android

Once upon a time I was a mobile app developer with a small mobile app development company, and for the most part we did pretty well for ourselves…and we only developed for iOS. Ok, that’s not entirely true, we did hire an Android developer but then he moved to L.A.

People called me names, called me crazy, called me stupid, and would protest: “Why would you not support Android!?!”

And I would reply: “Dude, Fragmentation” and then an endless series of debates would ensue about the veracity of my claims.

The last time I had this debate was 2014 and Lollipop was the flavor du jour. So has Android fixed “fragmentation”?

According to their own estimates almost 75% of the Android user base is still running a version of Android older than Lollipop and almost a third of Android users are still on Jelly Bean – which released in June 2012.

http://developer.android.com/about/dashboards/index.html

Let’s just all agree, no one uses a Blackberry anymore.

Happy App Developing!

My CocoaPods Catalog

I can tell you the license plate number on my mom’s car in 1988, but if you asked me which CocoaPods I used on my last project, I couldn’t tell you. Fortunately, through the magic of source control, I can go back in time and look through all the open source libraries I’ve used in the past. Of course, that’s kind of a huge pain in the ass to have to go back through all those projects. To that end, I’ve decided to start making my life a little bit simpler by cataloging all of the open source projects that I’ve used (plus a few that I haven’t) and made them publicly accessible via my github repo. FYI, it’s still a work in progress. OH and you’re welcome 🙂

https://github.com/lennypham/LKPCocoaPodCatalog

Apple CarPlay: What problem does it solve?

Featured Image -- 266

After a year of no news, Apple as re-announced it’s in-car iOS integration system CarPlay

I have to be honest, as a full on diehard raging Apple fanboy, the availability of such features will greatly influence my next car buying decision. However…

In what seems like a huge marketing oversight, neither Apple nor any of the car manufacturers have mentioned any of the primary use case(s) of what iOS integration could potentially offer:

    1. Real-time push notifications for traffic alerts
    2. Real-time alerts for family members. The car sends an alert to your loved ones letting them know that you’re on your way and how long ’til you get there
    3. iOS integration with on-board sensors (Low gas, low tire-pressure, check engine, etc.)

Maps, Messages, and Music? I can already do that…except for the texting part of course. I’ve NEVER texted while driving *looks down and to the left*

All CarPlay is doing (so far) is to give me an easier way to access that information through the car’s dashboard. That’s really cool and all, but it doesn’t address any problems in the context of my everyday driving experience. Here’s hoping there’s more to come.

iOS7 vs KitKat Adoption

Full Disclaimer: Still an Apple Fanboy

That said as a developer of mobile and tablet apps, I live in both worlds so the adoption rate of new operating systems is of key interest for me.

According to mixpanel, as of this morning ~80% of iOS users are now running iOS7 (chart).

In comparison only 1% of android users are running KitKat. To be fair iOS7 was released more than a month before KitKat but the numbers are nonetheless staggering.

Happy Coding!

“I don’t like documenting my code. If it was hard to write it should be hard to read”
– Anonymous

Is the iOS7 NDA lifted yet? How ’bout now?

Happy belated iOS7 day to all the devs out there. Not that the rest of the interwebs paid any attention to the Apple Dev NDA, but now that I’m legally allowed to talk about all things iOS7 related, here’s a code nugget for anyone using modal view controllers with a stand-alone UINavigationBar

If you’re following the new iOS7 design paradigm, you’ll want your nav bar to seamlessly extend to the top edge and blend in beneath the status bar. If you’re using a navigation controller this is automatically done for you. However, if you’re building your own custom modal view controller AND add a standalone UINavigationBar to your storyboard, this is what you’ll get:

BEFORE

You can see that the nav bar sticks out like a sore thumb. So to fix this, here’s what you’ll need to do:

1. Make sure (in your storyboard scene) that your UINavigationBar is set to ‘Translucent’

Screen Shot 2013-09-19 at 12.41.25 PM

2. Set the delegate property of your UINavigationBar to your View Controller (or some class that implements the UINavigationBarDelegate protocol).

3. In your delegate class (e.g. your View Controller) implement the following code:

- (UIBarPosition)positionForBar:(id )bar
{
return UIBarPositionTopAttached;
}

And now you should see something like this:

AFTER

Hope this helps!

“Delete all your comments. If it was hard to write it should be hard to read”
-anonymous

The best IDE ever written

I’ve been turning caffeine into code for a long time and for my money the new Xcode 5 (still in beta) is the most delightful IDE I’ve ever used.

I remember back in the 20th century when I wrote code using just a plain ‘ol text editor. Those were the days. Cars had tape decks and the sun shone everyday. But re-compiling your app meant taking a fifteen minute smoke break, and god help you if you had one jar dependency missing in your ant scripts.

I know right?

Over the years there have been a few improvements, Emacs, ultra-edit, Eclipse, Visual Studio, etc. but by and large the advances have been few and far between. Up until recently, every platform has required developers to work really hard in order to accomplish really simple things. Lots of boilerplate code just to get a “hello world” app working. I mean, have you ever tried to putting together a RESTful web-service using Microsoft’s WCF? You might as well try to come up with a unified theory of physics while you’re at it.

Since it’s still in beta (and under NDA), I won’t get too much into the new features of Xcode 5, but I will say this:

Your tools should work for you and not the other way around.

For the first time in the history of computing I’m really excited about my IDE. Here’s what you can look forward to with Xcode 5:

  • It’s freaking FAST!
  • The debugging tools are immensely improved
  • They FIXED auto-layout. Trust me. No more surprises. You don’t have to pull all your hair out. It just works…the way you need it to.
  • Did I mention how FAST it is?
  • Improved git integration (if you’re not on git, switch…now)
  • New and improved testing framework
  • Support for Doxygen style comments

And I haven’t even gotten to the good stuff yet. Of course there is still one outstanding bug with the Apple LLVM compiler. It still only does what I tell it to do and not what I meant for it to do. Hopefully they’ll fix that in Xcode 6.