Author Archives: calimenace

About calimenace

Web Developer II at Bridgepoint Education.

Not Everyone Has an iPhone

I’d like you to take in informal data point on your immediate social network. No, not the people you like, heart or drop cute little emoticons on, I’m talking about actual people you talk or text with. 

Now, count on 10 fingers (yourself included) on what smart phone you and your 9 other peers are on. At first pass, that’s 5 on an iPhone and 5 on an Android. This includes my immediate family members, in-laws, the boys if you will and me.

I use an iPhone and I have that bias groomed into me from the start. There’s 50% of an audience I very much overlook. 50% of an audience I don’t necessarily acknowledge when I code and it’s a thought I want to process today with you by my side.

This pondering impacts everything we do on both a business and cultural level. But bringing it back to the context of this channel, namely, web app development, it gets me to once again think. This is a challenge once again brought to my attention by my JavaScript Instructor, Thomas Powell. 

A small except from a previous conversation, he says “grab a stock Android phone or throttle your dev tools and feel the pain”.

Here’s an ad hoc test I just did right now. I have Outlook’s web app open in my Chrome browser and I’ve intentionally throttled the app at a Slow 3G connection. I’ve had the the time to write and rewrite what I’m saying to you at the moment because Load is at 1.7 minutes. Okay, I’m over it. Flipping this back to Online and it has a Load of 7.36 seconds.

Now, to be clear this is Outlook which means an abundance of emails (text and downloadable images) so for Outlook to do this over the wire is amazing in itself.

Unfortunately, I don’t find myself equipped to convince business leads that servicing these audiences are important. Except to say, it is.

Here’s some food for thought. 

And a list of challenges we as developers need answers to in order to overcome this oversight:

  • How do you convince your business that a non-iPhone lead is worth pursuing? 
  • In this case, the argument that not everyone is on the latest iPhone or a 5G connection?
  • What are the data points necessary to present which gives them the chance to make an informed decision?
  • How do you as a developer address this problem without ever being told?
  • Are solutions like caching, gzip, compression or progressive web app techniques enough to solve this problem?
  • Product, Design & Development often argue about what the MVP truly is. Those debates should continue.
  • But have we beat it with a dead horse when it’s been about the same segments since the advent of the original iPhone in 2007?
  • Are your UX and Design specs already framed with an iPhone as its exterior? What gave to that assumption?
  • It’s fair to say that other countries have completely different networking infrastructures – word of mouth has it that South Korea has one of the fastest internet speeds of any country.
  • But on our own soil I know for sure that there are regions within our 50 states that aren’t wired up like Silicon Valley. 
  • Take a look at the rust belt. 
  • Take a look at the corn belt. 
  • Take a look at your own county and reflect back on what cities had the poorest of internet connections. 
  • Tie that alongside the type of hardware your 9 other peers are on.
  • Can we develop for that?

Guidelines When Learning JavaScript

5 things my JavaScript instructor taught me that I want to share with you as well.

1.) Be realistic.
2.) Learn coding techniques.
3.) Don’t mistake complex for correct or aim to find one true way to solve things.
4.) Make sure you aren’t kidding yourself about your markup or CSS.
5.) Avoid libraries until you straight code JavaScript and DOM pretty well.

From JavaScript to C#

TLDR – With the exception of Flash, I’ve been all in with JavaScript since the start of my career. That said, my current company maintains a few legacy applications built primarily in the .NET framework. Due to resource constraints and being in that start-up life, I was tasked to help support these existing systems. Long story short, this is a tale on how a JavaScript Developer went head first into C#.


I guess I’ll start at the beginning.

Research

Flying by the seat of my pants from that previous inquiry, I went in the next day on a mission. Cringing alongside my keystrokes, I prayed then dove into the rabbit hole.

Google Search: learn c#.

Google’s SERP displayed this website organically at #3, learncs.org.

Start the clock at 112pm PDT.

Gotcha 1

C# is object oriented and its syntax is very similar to Java.

Chapter: Hello World

“Lists in C# are very similar to lists in Java”

Chapter: Lists

“For loops are very similar to for loops in C”

Chapter: For Loops

Hi, My name is Mark and I do JavaScript. What’s in it for me?

Gotcha 2

I just wanted to write a variable.

// Write a variable in C#, FIRST PASS.
string productName = 'TV';
Console.WriteLine("productName: " + productName);

// Output, FIRST PASS: 
error CS1012: Too many characters in character literal
Compilation failed: 1 error(s), 0 warnings

// Write a variable in C#, NEXT PASS.
string productName = "TV";
Console.WriteLine("productName: " + productName);

// Output, NEXT PASS: 
productName: TV

Okay, so single-ticks are off the table. Thanks.

Gotcha 3

How many different ways can you define a list of values in C#? In JavaScript you have an Array (irrespective of flat or multi-level). But in this world, these data abstractions are bundled either into Arrays, Lists and Dictionaries.

It makes sense when do a deep dive into the minutiae. Arrays are still simply arrays. Lists are essentially a more dynamic Array for when you don’t know how many variables to truly hold. Dictionaries are like phone books (e.g. a collection of names and phone numbers).

Gotcha 4

Writing a method and assign a modifier to it. Public, static?

// Structure
[Modifiers (E.G public or static)] [Type of output] [Name] ( [parameter 1],[parameter 2] ...)
{

}
// Multiply method example
public static int Multiply(int a, int b)
{

    return a * b;

}

It appears similar to what I see when TypeScript seasons a Class setup from the object oriented approach.

I now share these sentiments but sitting from the other side of the table:

Traditional JavaScript uses functions and prototype-based inheritance to build up reusable components, but this may feel a bit awkward to programmers more comfortable with an object-oriented approach, where classes inherit functionality and objects are built from these classes.

https://www.typescriptlang.org/

Gotcha 5

Until you learn more advanced programming, you will have to use to public modifier in separate classes.

Chapter: Basic Classes

I guess anything I write will be accessible by any other object for now. Apologies in advance. 🙏🏾

Conclusion

Stop the clock at 429pm PDT.

The final lesson was complete. Dead stop. No celebrations. No confetti. Not even a sliver of text saying, Good job. Boo – I was hoping for more. This slight is simply a critique for how the movie ended. The overall tutorial was good, condensed just enough so that the learning curve wasn’t steep.

For me, the only way to truly relate to an object oriented programming language will have to be through the lens of a TypeScript user. So if you already involve type checking in your JavaScript setups, I’d recommend you look at it from that context.

What’s next you ask? Ultimately, it’s about leveling up so my next set of research rests within the context of a web app (namely the legacy app to maintain).

A Few Minutes Later

The app is pulled down to my local machine, I’ve popped open Visual Studio. Let’s wrap this up!

Google Search: how do you know if it’s .NET mvc

Is ASP NET MVC dead? Let’s revisit that later. 🧐

4 steps later, I can confirm that the Identity is “System.Web.Mvc” and the current version of this legacy system is 5.2.7.0. So far, no EOL plan, whew. Dodged bullet 1.

Let’s circle back to that previous result, yes?

F*ck.

The End.