Stranded

Dancing Tango at the airport 🍷

Enjoy your time at the airport as you dance with a another human before or after your flight.

The project is inspired by my curiosity, passion for learning, dancing, meeting people, and this community group

tech: Swift, Vapor, Push Notifications, Database, Containers


Hola 👋

I’m Idelfonso. I believe some things can be done much better and delightful.

The way I code mobile/backend applications is by making them much simpler, intuitive and user friendly.

Whether you are creating a proof of concept, need assitant on an ongoing or starting a new project – I can help! - send email


Open Source Contributions

Writing BDD + TDD in my current projects

Github Repo Cucumberish - Ahmed-Ali 👈🏽👀

No method is more effective than a good example. - Ingvar Kamprad, IKEA Founder

The Problem

A developer could write the following below. But this is missing some context, and only developers could! be able to understand what is the system is doing.

func testSystem_whenReset_isInStarted() {
 sut.setToInProgress()

 sut.restart()

 XCTAssertEqual(sut.state, .blank)
}

A different approach: Give me an example

Given the application is "in progress"
When a user "restarts" the application
Then the application will set to "default"
func Given("the application is [regex]") { state in
 sut.set(state)
}

func When("a user [regex] the application") { action in
 sut.perform(action)
}

func Then("the application will set to [regex]") { expected in
 XCTAssertEqual(expected, sut.state)
}

The result out of it is that developers can make a set of reusable tests and stakeholders, product owners, QA tester can expand the tests into every state of the system.

Developers only need to keep following their TDD approach.


Mobile Applications

mmMap 🚎

The Problem

But most importantly! How happy… or how stress are you? ⛱ 🤯

The ability to keep learning is an invaluable skill

The Solution

mmMapp link your calendar with your social media accounts and have mmMapp shows you the events in a sequence with stopping points, happy routes to take, human experience taking int consideration.


Articles

DevOps: Every mobile application should be parallel with YAML & basch

Scripts basically. Scripts help you do the following things:

The above is no longer a topic of discussion… It’s a prerequisite.

Disclaimer If you or your team is already working or starting a software application project then I’m assuming it’s a serious project. Otherwise, I’m assuming you are testing a new API and the application does not generate any revenue or cuts down on cost in any way.

A pipeline prevents anyone questioning what was done to create the build. Not just logic code can affect your app but what configurations you are injecting will definitely impact it the most. The pipeline is so important in mobile that even Apple created one, XCode Cloud 👩‍💻 ☁️

Profiles, certificates, and tokens are interchangeable terms, but they are very different. I will refer to them as certs. The team will benefit from having the same downloading the same certs. Otherwise, everybody is creating confusion and not being organize enough. A tip to prevent the previous, use fastlane 🚇 Teams at many companies including Google are using it.

Extra DevOps is and is not: a methodology, a single piece of a software tool, a specific role/task.


Bridging completionHandler(_:) and async/await

If you have been reading or watching the Swift Evelution proposals you might have barely heard about continuations. Continuations lets you capture in a closure (in some cases) the result of a delegate callback and return it to be use as a suspension point after you have explictly requested for the value of that object.

There are many different ways to implement continuations. In the next example, I show you how I converted ASAuthorizationControllerDelegate “custom” object to be use as an asynchronous function

class SignInWithAppleService: NSObject, ASAuthorizationControllerDelegate {
  //...
  public func fetchAppleIDCredentials() async throws -> ASAuthorizationAppleIDCredential {
          let request = ASAuthorizationAppleIDProvider().createRequest()
          // ...
          return try await withCheckedThrowingContinuation { continuation in
              self.activeContinuation = continuation
              controller.performRequests()
          }
    }
}

// MARK: - Use
let signInWithAppleService = SignInWithAppleService()
let credentials = try await signInWithAppleService.fetchAppleIDCredentials()

I left many details out, but it’s with the hope to make it an excersice for your the reader. There are still many Apple APIs which were left out of the convertion batch, just like the above. You will find many methods with the new and old API declaration in your autocomplete window.


Writting software asynchronously 🧵

With my ongoing project feature at the top I have been able to gather all the knowledge I gained into a single application… more like many related to the same application.

I’m really grateful and content about the excitement there is in the #SwiftLang community. Many people think You write iPhone applications - maybe! I can relate to this conversation Twitter video

Swift is an open-source language which has achieve things like differential progamming, functional programming, and server-side development. Within the last 2 weeks ago! 🤯, the language gain two new milestones Concurrent programming and Distributed Computing. Amazing 🚀.

For my project, I have been able to combine and use server-side development, concurrent programming and leverage the use of declarative programming. These were things that I was looking at the progress of, mainly thanks to the Swift Evolution #iOSApp.

At this point you might wonder:

The true is… I enjoy learning, doing, and improving


AWS Lambda with Swift Runtime

Many iOS developers don’t realize at the beginning that they are actually using a programming language with Functional Paradigm and Principles. The Swift language became really popular thanks to iOS applications. Today, the language does not only help builds applications across an array of customer-facing hardware (iOS, WatchOS, iPadOS, CarPlay) but also enterprise-level and research level as of backend applications and machine learning models respectively. Most recently I saw a microcontroller dev kit for people to start building projects that exist with Raspberry Pi but with Swift and it’s own IDE

“a prototype is worth 1000 meetings” - IDEO

Many people say: “well…. its just a Hello World program” or “it lacks the vote from an enterprise point of view” To them I must say there is not an official council who approves or disapproves what technology lives up to the standards. And newer technology aims to address the issues and lack of current technology, how far we can push it, it’s only up to us; developers to run with it an see what we like.

Thank you Fabbian Fett for given us Swift AWS Lambda

Getting started with Swift on AWS Lambda

GitHub


iOS install certs

If we are in 2021 and the team does not have the following… you are crippling the product and the developers. Not too many people think is important. The budget will reflect it and because is not important it will be hard for stakeholders to pinpoint the money leak. At the moment there is not a good debugging tool for it… I’m looking at you JIRA 👀

The command line is more like $ fastlane ios_install_certs Many people would know the previous. For the rest who have left this process manual and up to all team members to figure out, let me explain:

Nobody has to be granted access to the Apple developer portal. Otherwise, the admins has to manage new people and people who are no longer working on the project. But then what’s behind the curtain? Git. Because you have previously set up the above in place developers only have to copy the up to date certs from the source control vendor they already using and have access to.

If you are even a single/solo/indie/freelancer app developer for Apple operating systems you (or the rest of the team) will help the client save money. For the developer, s/he can stop wondering if the job they are doing is worth it.


YellowPepper Talks

Introduction to Firebase Database, IAM, and backend for the front end developers.

I talked about how to start with Firebase, Realtime Database, and its rules. Also about Storage Database and it rules

Along with it, I developed a small sample iOS project using Swift to send text and image nodes, how they are shown in the firebase console, and which methods I use to retrieve them in the client

tech: Swift, UIKit, AutoLayout, Firebase Realtime DB

GitHub


Side projects

iOS/macOS Shortcuts


Data Pipelines with Apache Airflow

When data analysts and data scientists use data, they rely that is accurate and diverse enough in order to come up with these amazing models that help drive business decisions. Data comes from many places and from different times; a system could start collecting data tomorrow or it was already started 20 years ago; Imagine that 😅

DAG

This project showcases how to design and schedule a series of jobs/steps using Apache Airflow with the following purposes

DAG

Github This project was completed under the Data Engineer Udacity Nanodegree link

tech: AWS Redshift, Python, Apache Airflow, Docker


Data Lakes 🚤 with Apache Spark + EMR Cluster

You can take a trip to a polluted lake or a clean lake and how the water looks, tastes, or where it comes from matters.

Data lakes is a new analogy to what Data Warehouse was till not too long ago. We are still using the same hardware for Data lakes, but with new tools which makes possible to cover more ground.

In my previous project STAR vs 3NF 🥊 SCHEMA I prepared the data to be ready for use by BI applications with the OLAP cubes. It’s a structure that has been validated and vetted through several implementations and successful cases. When I learned about Data lakes: the tools, the language, Serverless (Python, learning Scala) I felt that I save a bit of automation by looking into it.

Don’t get me wrong, like any other technology it’s flexible, there are pros and cons, budget, analysis of your workload, and team work.

Data is the new oil 🛢

As I mention, automation, but not really. Instead of creating tables and doing the ETL dance, lets do the ELT 💃 dance.

Big Data frameworks like Spark focuses on what, where, and how to what Hadoop couldn’t

df = spark.read.csv('s3a://.../file.csv', sep=';', inferSchema=True, header=True)
df.createTempView("log_data")
user_table = df.spark.sql("""
                        SELECT user_id as id', 'year(ts) as year
                        FROM log_data
                        """)
user_table.show(1)
user_table.write.parquet('users', partittionBy='year')

Jupyter Notebook

We will perform our transformation and have them save in S3 for which our BI apps could connect to or we could attached to the cluster, but they are expensive 💰. S3 it’s cheap and it doesn’t get shutdown.

Another step is the Schema-on-read for this process to be possible, and if you noticed there is a lot of steps.

Github

This project was completed under the Data Engineer Udacity Nanodegree link

tech: AWS EMR (Spark+HDFS), Python, Notebooks


Data Warehouse with AWS Redshift

Why would we want to use re-create our table structures for Analytical Procedures?

It happens that performance is much better, we can do fewer joins and access the same information. We still would like to have our 3NF schema for application purposes on the side, think about it like a separate microservice. Besides re-creating our tables, these can be improve… by a lot more with the following!

In the first point, I’m talking about creating an ETL process to load this data, but of course there is some setup that needs to be done

There is an overcrossing between Infra DevOps 🛠 and Data Engineers 💾

For this project I utilize AWS web services like redshift, s3 storage buckets, user roles, policies, and cloud watch

The idea is how can we prepare data to be use by Business Intelligence applications Tableu or even Jupyternotebook! 👍 In order to help the business see an overview of the data in a diagram of what important features of the product their customers might be using. Mainly, how can we improve the performance of these OLAP and OLTP transactions? For that, we use the combination of star schema tables, we build a strategy for a distributed data system, and do grouping for all the features thanks to REDSHIFT.

Jupyter Notebook

This project was completed under the Data Engineer Udacity Nanodegree link

tech: AWS services*, Python, Jupyter


Creating an ETL process with Apache Cassandra

Handling BIG DATA and storage now a days is no just feasible, it’s a must.

import pandas
import cassandra

Losing customer it’s not an option. Today in the world we have a ton of devices that are gathering and sending data. The benefit of using a document store database #NoSQL, is that developers don’t need to maintain and/or adjust entities, migrations and changes on existing products. Companies and product moves in an agile environment, where requirements are constantly changing; NoSQL allows us to spin these requirements in a quick manner.

The Business Case 💼

The following application establishes the following case where we have deploy a music app and its collecting data which it’s the store to a local text file. From that we known which songs does the user listens to and which membership they are on (at a higher level).

// "Some of the largest production deployments include Apple's, with over 75,000 nodes storing over 10 PB of data, Netflix (2,500 nodes, 420 TB, over 1 trillion requests per day), Chinese search engine Easou (270 nodes, 300 TB, over 800 million requests per day), and eBay (over 100 nodes, 250 TB)." https://cassandra.apache.org/

My job was to extract transform and load this data into the system where business teams could bring their requirements and collect solutions from the data.

🔗 Jupyter Notebook ETL Process

Github

tech: Apache Cassandra, Python, Pandas

This project was completed under the Data Engineer Udacity Nanodegree link


Data Modeling with PostgreSQL

cur.execute("DROP DATABASE IF EXISTS ...")

Executing the basic CRUD commands is nothing new when it comes to building a system. A well-thought system it’s very agnostic, and concepts are transferable within different lower level products. Some of the most popular RDBMS involve PostgreSQL, OracleSQL, MySQL. But where does the data comes from? How often does the data change? How many files do we have, and how often we get new ones? Can we blame IoT 🛰 devices?

To the infinity and beyond… - Buzz Lightyear 1995

In the following application are given directory paths of where the client-side system is storing data files based on a music application product. I analyzed the data, build its entities and form the basic link between them. The analytics team is particularly interested in understanding what songs users are listening to

Github

This project was completed under the Data Engineer Udacity Nanodegree link

tech: PostgreSQL, Python, Pandas


Hero World

Creating a test case for a new park for The Walt Disney Company in order to track schedules and budgeting for the construction of all the projects.

Our dev team was able to implement a database using normalization, which helps identifies the identities inside the projects. We developed a process of Table Creation, Views, Stored Procedures, Triggers. During the project we learned how the activity relates to a project, how a project can have many employees, and how a firm can own many employees. This is done using the concept of a relational database.

tech: MySQL*

GitHub


Clients

Ally’s Flower 💐

It is an online delivery flower shop located in South Florida, servicing the area of Orlando mostly.

Roadmap

Communication

I had initial conversations with the client in order to sense her priorities, budget, and timelines. I happen to bump into a cheerful person who is very creative, organized, and skillful. She had everything on paper and folders. As a matter of fact, she was doing all the floral arrangements from her kitchen and in the living room she had the photo studio setup

Implementation

At the time and the lack of platforms available, I went to help her build her online retail shop using wordpress based on the functionality of uploading the floral photos and purchasing a third party theme.

Follow-up

After a few months, the client reached back again. She wanted to start accepting payments and delivery forms, also for a way to collect customers information. Most of the work was advice and setup.

Knowing there are many platforms out there dedicated for retailing, easy to build, payment integration, and most importantly, a solid foundation. I recommended her Squareup

We went ahead and moved the website domain and started filling up the business requirements. After basic training and follow-up calls, the client is happier than ever that she can continue doing business and not having to worry about workplace and retail location.

Deliverable

www.allysflower.com


Proendoscopy 💉

Proendoscopy is a local company in the city of Sunrise, it specializes in the service and repair of medical equipment, mainly endoscopes.

Inventory management iOS application:

tech: iOS: Objective-C, CoreData, UIKit

www.proendoscopy.com


Employers

iOS Software Developer | Northwestern Medicine | Chicago, U.S. | Current


Enterprise iOS Software Developer | Ulta Beauty | Chicago, U.S.


iOS Software Developer | GrowIt! | Chicago, U.S.

tools/frameworks/libraries:

Tags: horticulture


iOS Software Developer | KIN+KARTA

tools/frameworks/libraries:

tags: agriculture


Education


Intern iOS Software Developer | YellowPepper | Miami, U.S. | Nov 2016 - May 2017

tools/frameworks/libraries:

tags: financial technology


Coding Mentor | Volunteering | CoderDojo | Miami, U.S. | Dec 2014 - May 2016

CoderDojo is a non-profit organization aimed to teach introductory coding-skills concepts through hands-on learning for students between 4th grade and 8th grade.

As a mentor, I had a transformative experience by being able to teach and spark joy among the students.

Lessons objectives included working with scratch.mit.edu in order to demonstrate the following:

Additionally, students are encourage to:


IT Intern Developer | Martin Digital Group | Miami, U.S. | Jan 2014 - April 2015`

Tags: online marketing


Java II Learning Assistant | Florida International University CIS Department | Miami, U.S. | Dec 2015 - May 2016

tags: education


About me

Lección para tu vida

que bueno 🤣🙌🏾 Actitud | Victor Küppers | TEDxAndorralaVella https://t.co/orerUgfhpo via @YouTube

— Idelfonso (@idelfonsoGM) November 22, 2019

From Venezuela 🇻🇪 bailando 🕺

Charapin

Photograph by Charapin 🙌🏾

2021, Github Pages