General

What the F*N+!??

code

Font’s are cool. They can make the difference between good work, great work and terrible design. In programming, recently, I’ve come to appreciate fonts that feature ligatures. What are ligatures you ask? It’s when two or more letters are joined together to form one character or glyph. In the case of programming, fonts that support programming ligatures are especially cool as in my opinion, they add a bit of personality to your code and makes reading it just that bit easier.

There are many fonts that support programming ligatures… some free and others paid. A popular free choice is Fira Code. I’ve been using Fira Code for about a year now but recently, Microsoft has released a new font Cascadia Code for free and Open Source.

For those new to programming ligatures, they turn double equals == into a single joined long equal and fat arrows => into an actual arrow. Snazzy huh? From the screenshot above you can see how it looks.


Credit: https://github.com/tonsky/FiraCode

From the above image can you spot the ligatures? <=, != and == gets replaced. Why not give it a try. Download Cascadia Code or Fira Code and set it as your default font in your favourite IDE or code editor.

Ps: If you’re in need of a code editor, then Visual Studio Code should be your go to…. Seriously… it’s awesome.

Soaring to new hights

ross-parmly-25230-unsplash

The past few months, I’ve been working on a few projects that have pretty much kept me busy. I had to temporarily stop work on the trivia game and bible app while I work on these tasks. When this year started, there were several goals that I wanted to accomplish and though a few setbacks had occurred since then, from here on out, it is full steam ahead.

The next 2 weeks will be my downtime, I’ll be traveling to two beautiful cities packed with history, good food, landmarks and more. It is going to be an amazing adventure and I look forward to experiencing the food, culture and connecting with fellow developers. When I get back, it will be back to business. But thus my summer of fun begins!

The 2019 Dream Big Expo

dream-big-expo-logo

Today, I took a break from coding and attended  the bmobile Dream Big Expo held at the Center of Excellence. It was great. There was a bit of something for everyone. From Virtual Reality, Gaming, Comics, sustainably developed solutions, it was a great event for networking. I won a game of Just dance, signed up for the Rotaract Saint Augustine club, participated in a Silent Party.

The Silent party was particularly amazing. We were provided with over the ear headsets and could freely roam around the expo listening to music or opt to sit in the movie lounge where BlockBuster movies such as Bohemian Rhapsody, Game of Thrones and The Devil wears Prada were shown.

The dance off was pretty cool. The game was powered by the Kinect and though my dance moves were a little rusty, I won !

I also meet several members of the Silver Lining Foundation team that I hadn’t met and that was exciting. They’re all amazing people.

IMG_20190504_165441IMG_20190504_165947IMG_20190504_174704IMG_20190504_175626

Deep thoughts, big questions

For the Thinker, the examined life is truly the only one worth living. Ever the perpetual student, you experience the world as an endless opportunity for learning, discovery, and truth-seeking.

I recently took a test where you answer a series of questions about your personality to determine what your creative type is. At the end of this test, you are told what your creative type is and no surprise that I am a thinker.

The test breaks down your type into 3 main categories

  1. Creative strengths
  2. Untapped potential
  3. Ideal collaborator

Creative Strengths

Intellectual curiosity, ability to find and create meaning

Untapped Potential

Bridging theory and practice, applying ideas in real life

Ideal Collaborator

The Adventurer

The full description reads as follows

Driven by an insatiable intellectual curiosity, the THINKER makes the quest for knowledge and truth a lifelong pursuit. With all those big questions and abstract thinking, you’ve got some serious electrical activity going on in that brain of yours! Few things satisfy your inquisitive mind more than a well-formulated question or an elegant solution, and you’re content to spend much of your time alone, studying topics that fascinate you and engaging with your inner world of ideas.

Your greatest gifts are your sense of wonder and depth of perception. You can see the big picture and the deeper meaning of almost any situation in a way that few others can. Your biggest challenges? Getting out of your head and learning to balance theory with practice. Try not to get too caught up in concepts and abstractions, dear THINKER. Great ideas are meant to be brought to life.

Seek out the company of ADVENTURER types, who provide the perfect counterbalance to your introspective and analytical nature. The infectious energy and playful spirit of the ADVENTURER remind you to embrace the joys of creation—and to not be afraid to get your hands a little dirty in the process.

Want to find out what your creative type is? Take the test.

Something awesome this way comes

kenicenoel_logo@3x

Took me long enough but a long overdue update to my main website and blog has been published. I have refreshed the kenicenoel.com and stronglytyped blogs with a new theme, new palette of green and white so that they both are more consistent with my branding.

I plan to publish updates much frequently on my blog about projects, development milestones, app updates and of course personal stories about what is happening in my life. Thanks for checking out the new site and blog and say hi. I like it when people say hi!

Happy new year

So for over 6 months, I have been absent from strongly typed. This was due to a few changes that’s taken place in my life. In July 2017, I started making plans to return to Grenada. One month later, I left Trinidad and Tobago. I have since started working as a software developer, primarily working on desktop related software projects using the .NET framework and the C# programming language.

This meant that I had less time to work on personal projects like the Doze app which took a backseat unfortunately. This year though, I intend to rewrite Doze from the ground up and may even consider an iOS release. I’ll also try to periodically update this blog and the main website (:

Finally, I wish everyone an awesome 2018. May all go as planned.

Code faster with QuickTools for Android Library

Today, I’m proud to introduce QuickTools, an Android Library that provides a toolkit that simplifies some tasks related to Strings, Colors and other functions.

Welcome to my first Android Library which combines several useful utility classes to make coding easier. You can be sure that more useful features will be added over time.

Getting started (:

Add the library to your project first

Step 1. Add the JitPack repository to your build file if it isn’t already there
{
   repositories 
   {
    ...
    maven { url 'https://jitpack.io' }
   }
}

Add it in your root build.gradle at the end of repositories

Step 2. Add the dependency

compile 'com.kenicenoel:QuickTools:v1.2'

Afterwards

In your fragment, create an instance of Toolkit. e.g Toolkit toolkit = new Toolkit(getContext()); Or, in your activity, create an instance of Toolkit. e.g Toolkit toolkit = new Toolkit(this);

Toolkit class

After you created an instance of the toolkit class, you can use two of its built in functions:

Generate random number

toolkit.generateRandomNumber(min, max); This takes an integer min and max range and returns a random integer with the min and max range included.

Is app installed?

toolkit.isAppInstalled(appPackageName);

example: toolkit.isAppInstalled(com.kenicenoel.doze); This takes a package name of any app and returns true if it is installed or false if not. It can be used for instance to take the user of the store or do somthing that requires the presence of another app.

Available tools

In this release, there are 4 kits that can take advantage of:

1. ColorBuddy

ColorBuddy is your helper that makes getting colors for your project a sinch. You can get a random color or add your own color. You can also use standalone e.g ColorBuddy colorBuddy = new ColorBuddy(); without first creating a Toolkit object.

Getting a color

toolkit.colorBuddy.newColor(); This returns a random color in the HEX format eg. #EA1E63

You can use this however you wish, example:

String color = toolkit.colorBuddy.newColor();
TextView header = (TextView) findViewById('testId');
header.setColor(Color.parseColor(color));

You can also add colors in a similar way

Adding a color

toolkit.colorBuddy.add('#EA1E63'); Add a color to the list of colors in the HEX format

Get all colors

toolkit.colorBuddy.getColors(); Returns an ArrayList of Strings of HEX format colors (ArrayList colorsList for example)

Get size of color list

toolkit.colorBuddy.size(); Returns an integer value of the number of colors

2. StringBuddy

StringBuddy provides some useful functions for working with Strings You can also use standalone e.g StringBuddy stringBuddy = new StringBuddy(); without first creating a Toolkit object.

Remove Non Alpha-Numberic characters from String

toolkit.stringBuddy.removeNonAlphaNumericCharacters(myStringHere); This returns a String with all characters that aren’t letters or numbers removed.

Convert to proper case

toolkit.stringBuddy.convertToProperCase(myStringHere); This returns a String in proper format e.g HEllo wORlD! becomes Hello World!

Strip HTML

toolkit.stringBuddy.stripHTML(myStringHere); This returns a String with the Html.escapeHtml function performmed on it

Get Current timestamp

toolkit.stringBuddy.getCurrentTimeStamp(); This returns a String of current timestamp in format: yyyy-MM-dd HH:mm:ss

3. SettingsBuddy

SettingsBuddy makes working with shared preferences easier. If you are using it stand alone, create like so: SettingsBuddy settingsBuddy = SettingsBuddy.getInstance(context);

If you created a toolkit instance then you can just use its functions like toolkit.settingsBuddy.functionName() without having to create the stand alone instance. The name of the shared preference is AppSettings and the context mode is Context.MODE_PRIVATE

Saving data

toolkit.settingsBuddy.saveData(key, value); This saves the key/value pair in the shared preference

Get data

toolkit.settingsBuddy.getData(key); This returns the value for the supplied key if it exists or the default value if non-existant.

Remove data

toolkit.settingsBuddy.remove(key); This removes the value for the supplied key if it exists.

Default value

By default the default value is “N/A” but you can change this: toolkit.settingsBuddy.getDefault(); to get the current default value or toolkit.settingsBuddy.setDefault(aStringValue); to set the default value

4. ZipBuddy

ZipBuddy makes working with Zip files easier. It provides 2 functions: Zip and Unzip. You can also use standalone e.g ZipBuddy zipBuddy = new ZipBuddy() without first creating a Toolkit object.

Zip files

toolkit.zipBuddy.zip(filesToZip, nameOfZipFile); This takes a list of files (string paths) to zip and the name to call the generated zip file and zips them

UnZip files

toolkit.zipBuddy.unzip(fileToUnzip, targetDirectory); This takes the zip file (string path) to unzip and the target directory to put the result and unzips it.

Doze beta published to Google Play Store

I am happy to announce that Doze Alarm & Calendar has been published to the Google Play Store as a public beta. About two weeks ago, I published the app to Google Play. Since the last article, I’ve made several improvements, bug fixes, added new features and more to Doze beta. The app is much more stable and features improvements such as weather information based on the user’s current location, “Nearby”, a new feature which allows users to discover places near their current location that may be of interest. This feature is powered by the Foursquare API and the ability to get walking and driving directions is planned sometime in the future. As the app nears full non beta release, the Doze feature that allows users to choose when they usually wake up everyday so the app will only wake them up on days that aren’t public holidays is being worked on.

Thanks to everyone whose helping test this app.

Get it on Google Play

And so it begins. Welcome to Strongly Typed

It’s finally begun. My foray into online blogging starts here.

When learning to code, we’re often taught code that outputs hello world to the console or screen. What better way to start this blog than with saying a big HELLO WORLD to the “world”?

My name is Kenice. I’m a developer. I live in code. I’m fluent in many languages… Programming languages that is. From the web languages HTML, CSS, JavaScript, PHP among others… Java, C#, Node.js… I’ve dabbled in them all. I do web development and a bit of graphic design when I can and before I forget, I must add that I’m a huge mobile junkie. This blog will be my space for sharing tech stories as I see them, news, my general thoughts on various subject matter, troubleshooting advice, tutorials, interesting articles, events, opportunities, new APIs and apps that I’m working on and hopefully, once things go well, a community where like minded people can connect.

Strongly Typed Strung-lee tie-pt

Strongly typed is a concept used to refer to a programming language that enforces strict restrictions on intermixing of values with differing data types. When such restrictions are violated and error (exception) occurs.