ion-toggle Toggle/Change event handling

I’m working on an Ionic v2+ app that requires some extra logic to be executed when a toggle switch, also known as a radio button, is changed.  In Ionic this component is called an ion-toggle.  I tried using the normal Angular.io decorators like (change) or (click) but none of them were firing.  What I didn’t realize, mainly because I didn’t see it in the Ionic documents was that in order to handle changes in the state I needed to use the (ionChange) decorator on the component.  With this I could pass in more details to the function being executed.

<ion-toggle id="toggle{{parent.name}}{{child.name}}"
     [(ngModel)]="child.selected"
     (ionChange)="onChildSelection(parent.name, child.name, child.selected)">
</ion-toggle>
 In the above example the id of the component is being set to include the name of the parent and child.  The state is based on the child.selected state which in this case is a boolean value.

Philadelphia Region Tech Employers

One of the hard things when looking for a job is getting a good listing of companies that hire in your field. Over the years I’ve kept track of companies that have posted jobs related to software development or developer operations in the Philadelphia, Pennsylvania region. There are a few that are more of in the Lehigh Valley region but I didn’t take them out as they are all within commuting distance.

– Alion Science and Technology http://alionscience.com/
– Allied Wire & Cable http://www.awcwire.com/ 
– Almac https://www.almacgroup.com/
– Alphapoint https://alphapoint.com/
– ApprenNet https://www.apprennet.com/
– Aspect Consulting https://www.aspectconsulting.com/
– AWeber https://www.aweber.com/
– Azavea https://www.azavea.com/
– Bainbridge Health https://www.bainbridgehealth.com/
– Benefits Data Trust http://www.bdtrust.org/
– Bentley Systems https://www.bentley.com/
– Blackfynn http://www.blackfynn.com/
– Blackrock https://www.blackrock.com/
– Blue Cadet http://www.bluecadet.com/
– Boeing http://www.boeing.com/
– Brio Solutions http://www.briosolutions.com/
– BULOGICs http://bulogics.com/
– CardConnect https://cardconnect.com/
– Chariot Solutions http://chariotsolutions.com/
– CHI Systems http://www.chisystems.com/
– Comcast http://corporate.comcast.com/
– Converge Consulting http://convergeconsulting.org/
– CreativeMMS http://creativemms.com/
– Curalate https://www.curalate.com/
– Dell http://www.dell.com/en-us/home/
– Dental Imaging Technologies http://www.imagingsciences.com/
– Drama Fever https://www.dramafever.com/
– Drexel University Libraries https://www.library.drexel.edu/
– eMoney Advisor http://emoneyadvisor.com/
– Evantage Technologies Inc http://evantagetechnologies.com/
– Express Scripts https://express-scripts.com/index.html
– Freedom Pay http://corporate.freedompay.com/
– Frontline Technologies https://www.frontlineeducation.com/Home
– goPuff https://gopuff.com/
– Grubhub https://www.grubhub.com/
– HealthJump http://www.healthjump.com/
– Healthverity http://healthverity.com/
– Inspire http://www.inspire.com/
– Interactive Mechanics http://interactivemechanics.com/
– Invata Intralogistics http://www.invata.com/
– Kenexa (IBM) https://www.ibm.com/software/smarterworkforce/
– Kepler Group http://www.keplergrp.com/
– LifeShield http://www.lifeshield.com/
– Linode https://www.linode.com/
– Lockheed Martin http://www.lockheedmartin.com/
– Lutron http://www.lutron.com/
– McNeil Consumer Healthcare https://www.jnj.com
– MeetMe http://www.meetme.com/
– Merck http://merck.com/
– Microsoft http://www.microsoft.com/en-us
– Mikros Systems https://www.mikrossystems.com/
– Molecular Devices http://www.moleculardevices.com
– Monetate http://www.monetate.com/
– Moven https://www.moven.com/
– Music Choice http://musicchoice.com/
– NCC Automated Systems http://www.nccas.com/
– Northrop Grumman http://www.northropgrumman.com/
– NuCitrus Technologies https://www.nucitrus.com/
– Oracle https://www.oracle.com/index.html
– PerPay http://www.perpay.com
– Practice http://www.practicefusion.com/
– Promptworks https://www.promptworks.com/
– Push10 https://www.push10.com/
– QuantaVerse http://www.quantaverse.net/
– RevZilla https://www.revzilla.com/
– RJMetrics https://rjmetrics.com/
– ROAR for good http://www.roarforgood.com/
– s2s Communications http://www.s2scommunications.com/
– Sabre Systems http://www.sabresystems.com/
– Sapling Inc https://sapling-inc.com/
– Sapvix http://www.sapvix.com/home.php?pageid=home
– SAS https://www.sas.com/
– SEI Investment Company http://www.seic.com/enUS/index.htm
– Sidecar https://www.side.cr/
– Siemens https://www.siemens.com/us/en/home.html
– smithwise http://smithwise.com/
– Stratus EMS https://stratisems.com/
– Susquehanna International Group http://www.sig.com/
– Temenos https://www.temenos.com/en/
– Therapy Notes https://www.therapynotes.com/
– Think Company https://www.thinkcompany.com/
– Tonic Design Co. https://www.tonicdesign.com/
– Unisys http://www.unisys.com/
– Universal Health Services http://www.uhsinc.com/
– UPenn School of Medicine http://www.med.upenn.edu/
– URBN http://www.urbn.com/
– Vandegrift http://www.vandegriftinc.com/
– Vanguard http://www.vanguard.com/
– Vertex https://www.vertexinc.com/our-company
– Vistar Media http://www.vistarmedia.com/
– Weather Trends International http://www.weathertrends360.com/
– Weblinc https://www.weblinc.com/

If you have any questions or suggestions leave a comment below.

Dealing with multiple HDD and SSDs

Over the years I’ve collected a lot of spinning hard disk drives as well as solid state drives.  The problem has been easily swapping between them when all I had were enclosures.  This year I finally decided to start consolidating the drives and reformatting some of them to be used for backup and went searching for an easy solution to swap the drives.  What I found was the StarTech USB 2.0 to SATA IDE Adapter.  With this adapter I was able to quickly connect and switch between my laptop and desktop sized HDDs and SDDs.  My laptop is a Windows 10 machine and required no extra drivers to be installed.  All that I needed to do was plug in the power adapter and the data cable to the drive, then connect the data cable to the computer and plugin the power adapter.  After that the drives appeared on my computer and I could easily explore the files on them.

So if you are looking for cables to quickly connect SATA IDE drives to your computer via USB then the StarTech USB 2.0 to SATA IDE Adapter is the way to go.  They even have USB 3.0 connectors too for your newer machines.

Convenient dumb light

In our garage the only way to turn on the light is to walk over to it and pull the cord.  Unfortunately this light is located between two hanging bikes, which my head hits often, and over our car.  After a few practice runs in the pitch black I’ve become somewhat proficient at pulling the cord without much fuss.  Still, it is a pain on several levels so a few months ago I started looking for an easy fix.  I didn’t feel like rewiring the light to a new switch by the door; too much work to figure out the right way to do it and patch all the holes I’d make.  And I didn’t want to install a smart light that could be controlled by an app as that seemed like overkill.  What I ended up settling on was a First Alert PIR725 Motion Sensing Light.

The sensor is a basic motion sensor that looks in a 360 degree radius for movement.  It seems to easily sense movement 15 feet away and is even able to peer through the bikes hanging on either side to detect when someone first steps into the garage.  Once the sensor turns on the light it will keep the light on for about two minutes after the last movement was detected.  This is great as it keeps the light from turning on and off while you are going in and out of a room as well as not letting the light stay on for a long time after you’ve finished up.  We’ve been using this light for about three months and haven’t had any problems with it.  So if you are someone who has a light in a hard to reach location I highly recommend taking a look at First Alert PIR725 Motion Sensing Light.  It just may make your life a little bit easier.

Diving into Cryptography

Cryptography is an art that has a rich history spanning over 2,000 years.  It has evolved from simple letter swapping algorithms called transposition ciphers, to using a key to shift multiple letters in the text with the Vigenère cipher, to modern day symmetric-key cryptography that uses advanced mathematics.  With this evolution the art has transformed itself into a science powered by mathematics.

The problem with cryptography is that it is extremely intimidating if you don’t already have a strong mathematical background.  While I enjoy math I am far from a strong candidate in the subject.  When I began to get really interested in the subject I started looking for a good book to break down the concepts into something easily understood and entertaining.  While there are plenty of books that deal with the raw subject the one I’ve found that walks the reader through the history and explains both how the algorithms work and how to crack them is The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography.  It even has a section at the end of the book that challenges the reader to break the codes for several different types of algorithms.

It is hard to imagine that a book which dives into the mathematical properties of cryptography could be a fun read but somehow the authors nailed it.  The first chapters start off explaining the basic forms of encryption and then build up to the advanced quantom cryptography that is being researched by some of the topped mathematicians.  The challenges at the end of the book have their answers available online.  When the book was published there was a challenge to see who could crack the codes first.  After just over a year the prize was claimed.  You can read about the challenge on the authors page, Simon Singh: Cipher Challenge.

If you have any interest in the subject I highly recommend picking up the book.  After you complete the book you’ll have a great grasp on the subject and maybe an itch to dive even deeper.

Tag all of your music with MusicBrainz Picard

For the last decade I’ve been half-heartedly trying to clean up and organize my collection of music.  This collection has duplicate, triplicate, quadricate? copies of songs.  Some songs are tagged with no name or artist while others have the completely wrong information associated with them.  In addition to this hole of chaos I could never figure out a good way to get updates made on my phone over to my computer without a huge hassle.  All that changed after I decided to pick up a new Micro SDHC for my phone that can more than handle my entire collection.

My saving grace turned out to be MusicBrainz Picard.  Not only is it free but it took my piece of chaos and fixed it.  The software has a great way to fix all of the ID3 tags in my MP3 and M4A files.  The application will tag songs based on the names of the files as well as lookup the fingerprint of the song.  Since the software is lets developers create their own plugins you can extend the application to incorporate information from Last.fm or try your own hand at writing a customing plugin.

After playing around with Picard over the weekend I was able to cleanup over 90% of the music on my machine.  In looking at the music that wasn’t fixed I’m seeing a trend of duplicate songs and some that appear to have been corrupted.  Most likely I’ll be deleting the untagged files once I’ve verified they aren’t worth saving.  As always, if you find this software useful consider donating some money towards its development at MetaBrainz.

Speed up an old laptop

I just realized the other day that my laptop was over four years old.  I bought it a few months before our first daughter was born with the hope that it would last for a long time since money would be getting tight.  When I was looking I stuck with a brand and model that I knew could take some spills and getting thrown around, Lenovo Thinkpad. Specifically I picked up the T520 model that came with a decent processor and enough memory to easily handle Windows 7.  Well fast forward four years and the laptop was starting to show some sluggishness when it came to developing apps in Android Studio or running Firefox with a bunch of tabs open.

The easy solution to fixing the problem would be to spend another $1,500 and pickup a new laptop.  But like I said, money can get tight when you have a kid or two running around.  So to hold me over for a few more years I decided to upgrade the hard disk from a traditional spinning drive to a new Solid State Drive (SSD).  I picked up a new Samsung 850 EVO  500GB for $149 which is an amazing price, great specs, and a worthwhile five year warranty.  The drive came with software that transferred everything from the main drive to the new one so that I could easily swap out the old drive and boot the machine right up.  One other item you’ll need is a way to attach the drive to your machine when copying all of the files and operating system over.  I used a drive enclosure similar to this Vantex NexStar.  Once you’ve installed the new SSD you can put your old drive into the enclosure and use it as a backup drive or to transfer files between computers.

After making the drive change the computer is noticeably faster.  Booting up took just a few seconds and starting up applications is quicker than before.  To help out even more I later upraded my machine to Windows 10 by doing a clean install of it from Microsoft which cleared out all of my old applications and basically gave me a new machine.  I’m loving it and hoping I can get another two or three years of development out of the machine.

Picked up a new phone

A few weeks ago I had a post about which phone I was considering given that my BlackBerry Z10 was showing its age after over two years of use.  I thought I’d stick with BlackBerry and pick up the Priv since I had grown accustomed to the virtual keyboard and Hub concept.  After finally getting my hands on one I realized that the phone was bigger than I wanted.  The size was equivalent to the iPhone 6+ which is in no way a one-handed use phone.  Instead the Samsung Galaxy S7 came out and blew me away with its specs.  12MP camera with a sensor capable of f/1.7, expandable storage, great screen, and an impressive battery.  Add to it the ability to get wet and not die and I was sold.

So I went and ordered the device on the 4th and had it in my hands by the 9th.  After just a few days of use I’m pretty happy with the decision.  To replace the Hub feature in BlackBerry I went with Microsoft Outlook and found the app to be a respectable replacement.  With it I can have all of my email accounts in one place with the ability to easily filter and search through emails.  The virtual keyboard on the S7 isn’t bad either.  I’ve grown accustomed to not having the suggested words above the letters.  I’m no where near as fast as before but it still works.  Haven’t had a chance to really use the camera so I can’t say much about it.  The sound quality for phone calls is excellent, and yeah, the phone can send and receive text messages 😉

I’ll try to post some more in a few months to let you know more about how the phone is holding up.  But as it stands now it is a great new phone.

Making phone easier to crack

I was walking around the office the other day thinking about the whole iPhone and FBI fiasco going on and a question crossed my mind.  If a phone is locked by a users fingerprint will there still be the same problem when it comes to unlocking the phone after a user passes away?  Could authorities not use the persons finger to unlock it or if they have a record of their fingerprint use a recreation of it on the sensor?  If this is true then wouldn’t having your phone protected by a pin code be better than the convenience of using the fingerprint sensor?  If anyone knows of any research articles about this let me know.

Starting a company when you have a family, part 2

It might sound strange but I didn’t create my company because I expected to make much money.  To make money you need to be able to dedicate a significant portion of your time to researching a potential product and developing a solution.  In working two jobs and starting a family time isn’t a readily available resource.  Instead I created the company as an organization to launch any home grown products under, use as a learning resource for future endeavors, and general legal protection should anything happen.

One of the hardest realities I’ve found is maintaining focus on a product and technology.  There are constantly ideas popping into my head on a new app or service that I could develop or framework I could use to make development quicker.  If you’ve done anything with JavaScript then you are all to familiar with this problem; a new day brings a new framework that makes all other frameworks inadequate.  Amazingly enough this is where have limitted time has really helped.

Instead of jumping into a new pool of ideas and technologies every month my limited time has forced me to focus on a small subset.  Now when I have an idea I jot it down and let it simmer for a few months or even years.  If the idea has real potential then I’ll revisit the idea and start to research it further.  If it doesn’t then it will eventually go the island of misfit ideas.  Technologies are handled the same way.

Because I started off developing for BlackBerry phones I had only a few options, HTML/JavaScript for BBOS and Playbook devices or Java for BBOS only.  Since I wanted the most visibility in the app store I went with HTML/JavaScript and developed a WebWorks application.  The first run at the app I wrote all of AJAX and DOM manipulation calls by hand in JavaScript, no frameworks were used.  I took this route so that I could get a better idea of how raw JavaScript worked and understand how much a framework really helped simplify coding.  For the next iteration I used the JQuery Framework and was amazed at how much code could get ripped out and replaced with cleaner looking JQuery.

I’m not going to say that I have since dedicated my life to JavaScript and rank myself as an elite JavaScript coder with my own framework on GitHub that is used by the latest startups because quite frankly that isn’t the case.  The biggest lesson I learned from that experience was that JavaScript was an imateur language that had a lot of growing up to do.  I continued to use it for various projects but never dove in head first into it.

Since that foray I’ve focused on C++ development for BlackBerry 10 devices and Java for Android.  Up until the middle of this month I’ve always carried around a BlackBerry Z10 so any development was geared around BlackBerry 10 platform.  But given the demise of their operating system I’ve changed focus and started diving into two pools.  Android Java development and Angular/Ionic cross-platform development.  I’ll go into those in a future post as I’m still working my way through two online courses that will hopefully get me back up to speed.