After a brief testing period, I have submitted a new version of Wasted Time today to the Apple App Store. This version completely removes Facebook Integration. I have done so, after looking at the data that Facebook provided in the brief period that version 7.1.1 was in the store. I have decided not to feed the monster. Than you for your support in all these years of playing with this app.
Understanding Mental Models
I had a great discussion with my co-host on GamesAtWork.Biz Michael Martine the other day over lunch, on why I am going to turn off Facebook. While I have been pretty vocal over the years with friends and acquaintances on why I won’t use Android (you are the product), I have always rationalized using Facebook as it allows me to promote things I am doing (this blog, my podcast, the shows I perform in, and cool things going on at work). And while the value of this promotion may be suspect (we’ve been losing listeners on our podcast for years), the idea that it was helpful was keeping this going.
It has long been said that when you use a free service, you (or your data) are the product. This has long been true of Facebook. Facebook’s business model is all about leveraging the value of your freely shared data, to sell insights to advertisers. As a consumer, the value should be better targeted ads. An event happened a few years back which has made me very aggressive in the active sharing of this information, and it is one of the reasons that I have for some time gone in once a month or week and cleared any insights from the data Facebook thinks it has from me (if you’ve not done this … I highly recommend going to https://www.facebook.com/ads/preferences to see all the things Facebook knows). Every week this data grows and grows, with more “insights” about you, your preferences, your market segmentation, etc.
I recently did a fully Facebook data download (thank you GDPR!) and took a look what FB still had. AS you see in the previous post the data is still being captured, and my guess is used by Facebook, even though I had turned on the highest level of “privacy”. I believe this will continue to happen, as Facebook’s business model is to sell insights about me. This is the same reason why I no longer use Google as my default search engine. I am NOT a product, and as such, my mental model is – I want control of my data, and I want your business model not to conflict with my data privacy. In a world where more and more of what we do, and who we are, is captured in online systems, why should I support those who are not aligned with my privacy.
You may ask, why don’t I just restrict my usage of Facebook? Well, the value of Facebook is the network model it builds. It’s not just my data, but all the data about my data that is generated by Friends and Friends of Friends. So even if I refuse to allow people to tag me in pictures, it doesn’t stop others from trying. Facebook will let me know that they are trying to do so, and that data point is now in the network. Even the fact that I looked at the picture to say “no” is another piece of valuable information. At a certain point, the system can ignore my “no” flags, as 100’s of other data points say – Yes – that’s Michael. Think about it, you are not in control of your data. Just look how many times you see “Michael” is with “Someone”, based on “Someone” deciding to post that they are out and about.
Another reason to Disconnect FB
So as part of my disconnecting facebook process, I did a full dump of the data that they have on me. I must say that FB has made this a lot easier. The part that is crazy, however, is in the dump they show all the companies that have my information based on their add platform. For your consideration here’s the unreacted list.
Advertisers with your contact info
- RCG Global Services, Inc.
- Safir Consulting
- KILOUTOU
- Cyndi Lauper
- AFD.Tech
- Skillink cabinet de recrutement digital
- Icebreaking Recruitment
- Kele, Inc.
- Pinnacle Partners
- Infracom
- Dfind Science & Engineering
- WB Games
- Redbarn Premium Pet Products
- SABO AB
- Seasonal Staff
- UGI Energy Services
- NSG Pilkington North America
- LILIGAL
- KONE Sverige
- ISAGRI
- Strategic Operational Solutions, Inc. – stopso
- WFM People Nederland
- Sally Beauty
- Eagles
- Helder Recruitment
- Nouvall Engineering Services
- JW Research
- TeamQ14
- Monster
- Electro Power Systems
- Boxhill AB
- American Family Insurance-Careers
- FRIS
- Jobba hos Keolis Sverige
- Razor Technical Staffing
- Aprico Consultants
- Cognizant North America
- Georgia Department of Revenue
- AT&T
- Accenture Sverige karriär
- Parkwood International
- HTC Global Services – Official Page
- CT Imago
- People First (Recruitment) Ltd
- ASI Corp.
- Independer.nl
- Quantore
- Best Tabletop Games Crowdfunding Projects
- Bleiken
- Interplace, Inc.
- Best Buy
- Folksam
- DIVERSANT
- AMatch Detachering
- Royal United Mortgage LLC NMLS #13390
- Randstad USA
- Hayward Miller Ltd
- Enovacom
- REO Speedwagon
- Heritage Bank
- Target
- kWh People
- Broadspectrum Americas
- Uber
- Infotiv AB
- Design Crowdfunding Videos
- The Bachrach Group
- Mainz Brady Group
- Saber Healthcare Group
- Dfind it
- r2 Technologies
- CPS Recruitment, Inc.
- Open Carrières
- Marriott Rewards
- EG Workforce Solutions
- TJFACT – Totally Joined for Achieving Collaborative Techniques
- NTT DATA Services
- ARC Recruitment
- American Express
- Städtische Werke AG, Naturstrom und Naturgas vom Stadtwerk aus Kassel
- Stars Behavioral Health Group
- SO4IT
- Srinisrini
- Jongeneel
- DATS Recruitment & CAD Services
- Equipment Depot
- Prevas AB
- Wallace Hind Selection LLP
- Live Nation Concerts
- MCA Ingénierie
- State Farm
- Hoffmaster Group, Inc.
- SELLA Conseils. Recrutement et Solutions RH
- Parsons Corporation
- OBH Nordica Sverige
- Aldia Cooperativa Sociale
- CSS Industries, Inc. Careers
- Journey Mental Health Center
- Brandwise Group
- FutureYou
- Capgemini France
- Professional Recruiter Associates
- HNR
- DLT Solutions
- Xpeedio
- Best Crowdfunding Videos
- Hitachi U.S.A
- Languageline Solutions UK
- Axecibles
- CallTower
- TSP
- Design Crowdfunding Projects
- Chicago
- Richards Building Supply
- Eaton
- Evoqua Water Technologies
- Denovo Amsterdam
- Nortia Staffing
- Kuribay
- De Koning Uitzendbureau
- MIG – Martins Investment Group Talent Acquisition
- Silgan Containers
- MGEN
- LKQ Corporation
- Telephonics
- Anticimex
- Total Motion Vehicle Management
- Yates Construction
- IHerb Careers
- JITR
- Physicians Mutual
- Career Movement
- Avantage – makes IT simple
- Spacelabs Healthcare
- Capital One Small Business
- Infotel
- Mediware Information Systems
- Condesign AB
- Medical Specialties Distributors, LLC (MSD)
- Yanfeng Automotive Interiors
- Nigel Wright Group
- Logent
- Tech Crowdfunding Projects
- ISSY Personal och Rekrytering
- Best Crowdfunding Projects
- Hunter Engineering Company Corporate
- Menasha Corporation
- Enterprise Rent-A-Car Careers
- Hunteo
- Espace Aubade
- Nuon Sales Force
- ARAG
- Terminix
- Ciber Careers
- Ntelicor
- RCN
- Jarvis Johnson Ltd
- Joh. Mourik & Co. Holding
- Ige+xao Group
- Financial Search Group
- Best Design Crowdfunding Videos
- Elis
- INDUS Technology-Jobs
- Omaha Steaks
- WFA Staffing Group
- Tabletop Games Crowdfunding Videos
- Waste Management
- Groupe DFM
- AdeptSource
- Men’s Wearhouse
- UKENsprint2017
- Systematix
- CGI UK Careers
- Het Kadaster
- Careers at Dell
- HBS Consulting
- The HT Group
- Careers at Blue Lynx
- HHT Careers
- Menü-Manufaktur Hofmann
- Tierpm AV/IT Workforce Solutions
- Michael Page – USA
- Enterprise Rent-A-Car Netherlands
- Silicon Refractory Anchoring Solutions
- Booz Allen Hamilton
- Consumer Hub Ltd
- ’47
- Hillside Family of Agencies
- Jurek Rekrytering & Bemanning AB
- Kearney & Company
- Atos France
- CLS Services
- Viking River Cruises
- Tabletop Games Crowdfunding Projects
- Keeling Company
- Virtusa
- FM Global Careers
- North Country Initiative
- Hayes Management Consulting
- Netsync Network Solutions
- Trend People
- LEF Recruitment
- Hypertherm Careers and Jobs
- Pipestock Ltd
- Volvo Cars
- Lefit Recruitment – Interim I Coaching & Training
- Global Power Equipment Group
- Best Tech Crowdfunding Videos
- MetLife
- Fujitsu Sverige
- CS Communication & Systèmes
- Ecoburotic
- Total Resurs
- Chaffey College
- UBN Uitzendbureau
- Momentum Consulting Corporation
- 24/7 Shop at Home
- Prestige Staffing
- Programmer Resources Intl. Inc.
- Proxiad
- Tech Crowdfunding Videos
- CGT Caterpillar
- Quicken Loans Careers
- ImpressiveGreenApple
- Amazing Tech Crowdfunding Projects You Need To See
- Amazing Design Crowdfunding Projects You Need To See
- Stockholmsmässan
- Aegistech Inc.
- Best Design Crowdfunding Projects
- Sesmento Selectiekantoor
- Corparis
- Inrego AB
- Allmännyttans Trainee
- Depeche Mode
- Synopsys Careers
- HICKIES
- Corinium Language Associates
- Säljpoolen i Sverige AB
- Best Tech Crowdfunding Projects
- Softronic
- World Port Seafood
- L.A. BioMed
- Morisey-Dart Group
- Cerfrance Alliance Centre
- BDO USA, LLP
- HUMAN-CAPiTAL
- TEFL Heaven – Teach English Abroad
- Delta Dental Insurance Company
- 02dege
- Coca-Cola European Partners Sverige
- Viking Ocean Cruises
- Jobba på trafikförvaltningen SLL
- Van Gansewinkel Groep
- comScore, Inc.
- Best Tabletop Games Crowdfunding Videos
- Erasure
- Waterlandziekenhuis
- Rod Stewart
- Acando Sverige
- Thompson Thrift Retail Group
- Netinvestissement
Disconnecting FB – impact on Development
So, as I am working on disconnecting my FB account, one of the things that I will have to do is remove FB integration from one of my apps. This requires a new release of WastedTime – to be released soon. I will also have to get my Podcast and other integrations to be either a) done by someone else, or b) lose that method of promotion. Will be interesting to see the impact… Will probably take a few weeks to get this all setup. More to Come!
Squashed crashes
Wooohoooo.. some times when struggling with a programming bug, you just need to step away for a while. Then, when you come back, re-read the error messages from the crash – hopefully a light will come on in the brain. This morning, while editing this week’s episode of the GamesAtWork.Biz podcast, did a little work on the latest ALPHA code of my new app. Low and behold! The light when on in the brain, and the crashes are now gone. Testers of the app should now be able to add new recipients, delete those recipients, add new events, delete those events, and add recipients with events, and delete them all at once. I think now, it’s time to start working a little more on integrating picking an address from your address book, and then – I can make it look good. Exciting times!
Privacy and Personalization
The other morning I was sitting at my favorite coffee shop, having a discussion with one of my morning friends, on the kind of data your phone collects on you. As we talked thru my traditional soapbox of why I choose iOS over Android, they mentioned the experience of having an ad pop up in their Facebook feed from a local yoga instructor that they talked with just a few days earlier. They had not “friended” or “Linked” or “Followed” that person, but had just had a simple impromptu conversation with them one morning over coffee. I suggested that perhaps they were in the perfect target market for an ad to this Yoga studio. And that given the amount of data that facebook can track from being on your phone, it could have done a simple Venn diagram of the fact that both of them had been in close proximity recently, and met certain demographic characteristics.
Many of the tech pundits that I listen to are starting to remove Apps from their mobile phones, as these apps have much more access to data from your phone than most people realize. I had wanted to find out how powerful some of this ancillary data can be, and so, I recently updated an app that I am working on to add Facebook integration. That integration now allows me to get non-personally identifiable data about how my app is used: where on the global, what time of the day, for how long, and by many different demographic slices. Still pretty innocuous data, but realize that is my view of the data, not Facebook’s view of the data. Also, realize that my app does not require you to log into facebook to get this data. If you did log in, you are now personally identifiable. Again, imagine this for every app that you use that has facebook integration. And extended that data to all the people who use Facebook. The view of the world and the power of social networks note becomes exponentially more evident.
The bigger issue to privacy is that most people will log in to Facebook, and not think twice about allowing it access to their contacts – to find more friends. That data is now in the network, even if you try to never use, visit, or interact with facebook, you will have a profile being built, based on your “friends”.
A few years ago, Apple integrated Twitter and Facebook as system level APIs to enable better social sharing of information. This has been removed in iOS 11. I believe that this is directly related to Apple’s privacy policy. At the system level, these services would have had much more access to information about the user, that they may not have now. This continues to be in contrast to Android, which the phone manufacturer automatically grants Google access to your data as part of their licensing agreement (I hope this changes and if it has – would someone help me find that proof). I continue to refuse to use Android for that reason, and yes, it has an adverse impact on the ability for Siri and other personalization services on iOS to be as affective as Android.
Do you think the trade off is worth it?
One Crash Down – Two To Go
Well, I finally figured out what is going on with one of my crashes.. and can now allow people to delete Recipients with no cards sent.
Years ago a friend told me a story about someone interviewing for a job as a database programmer. The interviewer asked them how they would handle a programming request to delete an open accounts receivable account. The interviewee stated they would pop up a window asking “Are you sure?” The interviewer repeated the question saying, “what if they hit ‘Yes’?”. The interviewee stated they would pop up another window asking “Are you sure?” At which point there interviewer said, “what if they said yes, to every ‘Are you Sure’ window you could pop up?” At this point the interviewee said, “I would pop up a window asking for their banking information, so we could charge their account to cover the amount in the receivable account.” At this point the interviewer stated, “Yes, you understand referential integrity”.
This appears to be what Core Data is telling me in my crash. But I can’t figure out why my delete is not replicating down to all the events, and deleting them. So my next approach is trying to delete the events, one at a time in the list events view. Unfortunately, this is crashing too.. so more to learn here… but progress… As soon as I can fix both of these crashes, I plan on creating a view to show the details of an existing event.
First Public Demo
Had my first public demo of my Alpha level app last night. And I now have a timeframe. I will strive to make the app finished and done by Late October. The app is a simple idea, but I keep learning more and more things to make it valuable.
I am creating a App that will allow someone to keep track of the cards that they are sending people. While more and more people are using electronic cards, or no cards at all, just think of all the Hallmark stores that are closing, I still find it a wonderful surprise when I open the mail box, and find a nice greeting card in it. There are tons of holidays and events that warrant a card, and keeping track of which ones you sent to which person, can be a time consuming issue.
My new app will hopefully make it much easier to keep track of who you sent what card to. Lots more to come.
Making Progress
As of last night, the new Alpha code, allows the users to create new records, and new related records, without crashing!! Now that’s progress. Next I need to create the delete function on the main screen, and add in the correct displaying of created related records. This requires a new screen to display the chosen Event information, that shouldn’t be hard, and will allow me to validate that the image store function is working correctly. The good news is that testers are finding some display issues between running the app on different types of screens. Evidently on the iPhone X the auto sizing of the fonts is not behaving as expected… hope to get some time to work on these next weekend!
Progress!!
Debugging Core Data
One of the reasons I’ve toyed with the new app for so long (the idea is about 5 years old), has been that I am struggling to learn Core Data. Not only that, but I’ve been dealing with a ton of day job activities, etc. So I am finally getting this app started. The basic idea behind the application is a header->detail line database challenge, back when I did DB programming this would have been called an invoice problem. In this case, we have from 0 to infinite headers (each one a unique record), and each header can have from 0 to infinite detailed records.
In Core data you would define your entities with Header having a one to many relationship to Detail. And that relationship would be optional, since you could have 0 detailed entities. Right now the application does a good job of showing you a list of the headers, and allowing you to add new headers. My early builds (the ones were I didn’t define the detail records) even let you go back and do a detail view of the headers.
Now when I go to the header views, it crashes while trying to give you a UITableView of the detailed records. Obviously I am not handling Detail records correctly. I’ve been told that these records are an NSSet and should be converted to an Array for UITableView handling. So my current guess is I am not handling an empty Array correctly. I am guessing I need to set it to NIL in the ViewController and then assign data to it in the TableView functions. (I will try that this weekend).
My second crash is when I try to allow a user to delete the Header records. I was able to do this originally, so somehow in my refactoring of the app to add the detail records, I must have screwed something up. I hope to fix this one quickly.
Now the reason I called this post “Debugging Core Data” is because the crashes don’t seem to provide me with a lot of insights, in to what the crash really is, but I find if I try and explain a programming problem I have to someone, I tend to work it out. Let’s hope this worked!