Monday, June 2, 2014

Feelings about Apple's Keynote

My initial thoughts are... is this an upgrade or just some minor UI tweaks and updates to subsystems.

I think the latter...

While watching the video I noticed a few things that should peak your interest, I believe that we are going to be one to two OS X Major releases from the seamless iOS and OS X experience. This is basically the closest to an iOSX version that we have had in the past 5 years.

1.) You should not be too excited about this release. (Remember the transition from Leopard to Snow Leopard?) Just a bunch of much needed UI tweaks and updates to applications that should have been there since inception.

2.) I love Apple's Ecosystem. However, as a power user, I want more behind the scenes features. With the release of Timer Coalescing in Mavericks, I was ecstatic. Being able to push my computer so much further with what appears to be a minor subsystem adjustment (although it took MANY years to finally come to fruition) was one of the selling points for me.

3.) I am waiting for the iOS presentation but can assume that you will see features that mirror those of the OS X system.

3a.) Translucency is very appealing but I really hope that is not a selling point for some of you new developers. Do not lose sight that padding around the edges are nice, but you should want to gain some more from the core to deliver a better experience!

Love you Apple, and good parallel programming joke!

Skylar

Monday, March 24, 2014

What I Learned About Freelance iOS Development

Being your own boss is the best situation you can be in! However, making the correct decisions when conducting your business can make you a BIG earner or a BIG producer and a slow earner. Here are some of the facts that I have learned over the years.

1. Know your customers!

You will spend a lot of time developing an iOS app. However, developing applications solely for unfunded startups can lose its sheen quicker than a new car. Try to find an established startup with funding before writing any lines of code. If you do not, you will find yourself stuck in a situation such as this.


As you can tell, your LUMP sum is coming at the 80% mark. If your project took 40 days to complete 32 of those days were unpaid. This is rent, cable, and student loans you just missed. No bueno.

This is how you want your pay scale to look.


Try to keep the solid blue line lined up with the dotted black line.


2. Keep Your Payments as Close to This Line as Possible
One rule of thumb, if this is a short "fix-em-up" project, SET CHECKPOINTS according to this line. Know a defined start and finish point, along with checkpoints along the way.


With your client, set up each of these Checkpoints. Set your requirements for completion, and remember that these checkpoints do not need to be equally spaced. Some requirements may take longer than others and if so, require more of the final payment at time of completion. Keeping your line and checkpoints as close to reality will help you tremendously. Try it, it works. Think agile on a number line. 

3. When Possible, Charge Per Feature Not By Hour.

When starting your own freelance development team, remember that you are as credible as your work. Gaining this credibility is exponentially harder than writing the software itself. A credible developer will always make sure that they did just the right amount of development for the amount they estimated it would cost.

Charging per hour may be the quickest way to lose this credibility. 
("It took you X hours to get that put together?! That's not right, there is no way!)

It is easier to charge per feature, no holds bar. Understanding the whole problem prior to jumping into the code makes your estimation efforts far easier than jumping right into the code.

Remember, your client wants this work done in an efficient manner. Conversely, you want your client to keep coming back to you! Don't rake them over the coals. It is becoming so much easier to be able to pump and dump some of these companies, but just think about that angel sitting on your shoulder. Do the right thing, get it done, and get it done right.

4. When Not Possible, Charge Per Hour

This strategy is up to your discretion. If it's a quick fix or a few .nib's to be replaced and relinked, I'd charge $50 an hour. 

If your client is unwilling to charge per feature, then try to reach $100 per hour. This has proven me well in the past and may set your client back $200-$300. 

Just remember, you should only do this if your client is unyielding to the feature strategy. 

Do not take advantage of this. 5 hours to link a Vanilla Table View is absurd. You should hone your skills, young Padawan.


Conclusion.
Getting your business booming means taking some responsibility and some hits to your pay scale. Unless you have proven results with proven applications, your only hope is to offer discounts until you can show that your track record will speak for itself. I have been in the business now for approximately 3 years and am still learning. 

Success will not come overnight, but will need to built upon prior results

Cheers,
Skylar. 


BTC: 1G6boGibqU14pHxMf5zNK8Gmo9uiAgerbt







Sunday, March 23, 2014

Rule of 72's

Have you ever had the feeling that you can not unplug from technology? As I sit here writing this blog, surrounded by a teenager blaring television in the background, and two ladies in their mid twenties doing work on their laptop (one for school, the other for work) it has become apparent to me that there is an addiction to technology that may be hard to break. I propose the Rule of 72's to you that has helped me in the past.

As a computer scientist, I know all too well the benefits of technology. Socializing, relaxing, developing, and every iteration few and far between seems to have a web application available for consumption. Being able to interact on the most basic level to get a task done seems to always involve technology as a means of completion. My gut is telling me something is off, or that the muffin I just ate was bad.

Completely unplugging yourself from technology is becoming more difficult with the passing days and I can only see it getting worse. There is a rule of thumb to follow that I guarantee will benefit you once you start doing it.

The Rule of 72's

  1. Limit yourself to 72 minutes a day to extracurricular technology.
    1. (By extracurricular, I mean outside of your daily job or schooling)
    2. And you can round up or down (70 minutes - 80 minutes)
    3. The meaning behind this is that during a waking day you may have only 4 hours of free time to yourself. If you waste that time trolling Facebook, scouring Twitter, or pinning your interests with Pinterest, you are not able to get that time back. (If I were a betting man, which I am, I would say ~ 85% of that time was wasteful and unproductive). Limiting your time to this small rule will greatly improve your outlook on life as well as bring your social life back from the dead.
    4. This includes television.
      1. You: "Oh, but my show is on!"
      2. Me:  "Tough luck, you addict."
      3. You: "You are the meanest human being I have ever met."
      4. Me:   "And you have a problem I am trying to fix." 
  2. Take the last 72 hours per month to disconnect.
    1. Go around your house and unplug EVERYTHING. 
      1. Except your fridge, dummy.
    2. Try your hardest to complete those 72 hours from start to finish.
      1.  I promise, it will make your 73rd hour worth it.
    3. Find a hobby, a book you would like to read, and/or even go for a run. 
      1. You know how a tree's age is seen by the rings on its trunk? The same rule applies for a human's midsection. Try to stay lean and exercise!
    4. Every month, try to increase this time by just an hour. 
I am very cautious about the future of technology. As it stands right now, we still have the CHOICE to shut our technology off every now and again. With the future of wearable tech (ahem, Google, Android, and speculatively Apple), I can see a wave of technology that is unwavering and constant. Hell, glasses with notifications? Say goodbye to the good old American pastime. 

There is nothing wrong with unplugging. 

I promise it hurts at first, but remember that with every addiction it will ease away slowly.

All of the best and post your results at HN or as a reply to this post. I would like to begin a discussion about your Rule of 72's experiment on the first of the month at 8:00 AM EST. This discussion will SOLELY be on Hacker News as an Ask HN post.

As it stands today, we have 5 days until the Rule of 72's true value comes into effect. (March 29th, 30th, and 31st). This is a public experiment and please do try it. It's awesome.

Cheers,
Skylar.






Wednesday, March 5, 2014

The iBeacon Protocol and How to Hack It

Welcome back,

Following my post on Monday about the iBeacon GUI Generator, I figured that it was only fair to share with you how the iBeacon functions and operates. I also would like to show you how to bend the parameters of the iBeacon protocol to expand it in a functional way.

TL;DR: The iBeacon (BLE) Protocol is limiting for businesses that would like to use a single Mobile Application for over 65,536 customers and a small hack to grow it to 16.7 million customers.

As a preface, iBeacons are quite easy to hack into! But for the context of my post, I am talking about utilizing the existing iBeacon Protocol and expand it for your own experimental use.

How the iBeacon Protocol Works: 

There are 3 pieces of transmitted data that make the iBeacon extraordinarily powerful.
1.) UUID (So the iOS/Android Application is able to recognize it)
2.) Major Value (Transmitted as four-4 bit characters)
3.) Minor Value (Again transmitted as four-4 bit characters)

1.) Why the UUID is so important.
The Transmitted and Received UUID is the link between an iBeacon and the application that it is talking to. DBA's reading this site, think of this as a foreign key. While your iBeacon is transmitting its UUID nonstop daily, its responsibility is to transmit and hope that some second party receives that transmission. (Insert outdated SETI joke here). However, while building your iOS application, you need to specify what UUID you would like to listen for.

Here is an example of Apple's AirLocate UUID:  83256b74-78d0-43a4-8269-05f9dc8a44ba

And a graphic I decided to draw up to depict the unhealthy iPhone/iBeacon Give & Take relationship.



2.) Why are Major and Minor Values useful?

Major and Minor Values are so important because these are identifiers that an iOS/Android application is able to act and respond on. 

The format of the Major and Minor values is as follows:
Major Value: FFFF (4 hex characters)
Minor Value: FFFF

For every UUID that you broadcast, you are able to transmit 65,536 (FFFF + 1 in decimal) major values and each major value can have 65,536 minor values totaling.... 4,294,967,295 uniquely addressable iBeacons per iOS/Android application. 

3.) Why I decided to hack the protocol for more reasonable uses.

My test case: I am trying to deliver iBeacons to customers that will respond to my application's single UUID. As the company grows in breadth, I needed a way to handle my 65,537th customer. If using the naive approach provided in the iBeacon (Bluetooth Low Energy) protocol, this means that your upper limit of businesses that you can service will ALWAYS max out at 65,536. 

So I think to myself, how do I get around this?

One of the easiest ways is to hijack the two leading hex characters from the minor value. No business that I can think of will ever need to use 65,535 individual iBeacon's in their vicinity (Note: we are talking about the Minor Values AKA individual beacons in a building or business). By performing this simple hack, we are now able to address 16,777,215 individually unique businesses without ever needing to touch our UUID. 

The new format of Major and Minor values: 
Major Value: FFFFFF (6 hex characters, the two in bold were swapped from the minor value)
Minor Value: FF

As a result each individual business' Minor Value now has an upper limit of 256 addressable iBeacons, which is what I thought is more appropriate in my use case. 


You've made it.

Thank you for taking the time to read about how to use iBeacons effectively when building your business around them. 

If this post helped you in any way, please feel free to donate my Bitcoin wallet: 1G6boGibqU14pHxMf5zNK8Gmo9uiAgerbt

Good luck bit switching out there,
@skylarrudolph

P.S. When we address our 65537th customer on the iBeacon GUI app, we get a screen like this.


 The Regular Hex and Broadcast Hex turns red because we are out of the range for normal operating procedures. The top two hex values will show what values the iBeacon will send out. When decrypting this we simply pull the preceding two hex values from the minor signal and place it in front of the major signal. 

Business #:             010000 = 65536
Business Minor #:          01 = 1






Thursday, February 27, 2014

iBeacon GUI (Rudolph Productions Application)

Community,

With the recent update of Apple's OFFICIALLY released iBeacon Protocol I present you with:

iBeacon GUI Generator

Here is the link to the application: BeaconGUIRPhttp://bit.ly/Nzk9uG
http://http://bit.ly/1fWq43M

The iBeacon GUI application will generate your major and minor hex values for your iBeacon (with Apple's official protocol). One neat feature that is baked into this is that you are not limited to the 16 bit major identifier (being ffff or the maximum number of beacons on one UUID of 65535). My application will allow you to produce identifiers for 16,777,215 separate beacons that all share the same broadcast UUID.

UUID needed to recognize iBeacon's:
1ACBAD6E-E1A5-4838-A62A-22D35D00C35B

This will also generate the BGScript needed to flash onto your BLE devices.

1.) Say that we want an iBeacon with the Major Identifier of 720 and a Minor Identifier of 2.




2.) You must then click Test Our Broadcast Signal which will simulate an iBeacon's transmitted signal (in hex) and verify that it matches our major and minor beacon values (in decimal). If you're green then you are good to go.



3.) After verification is validated, we are now able to generate a BGScript for that file.
Click the Generate Script button and your BGS file will now be in your Downloads folder.



P.S. Do you need a 65536th iBeacon in your vicinity? (This will cause an overflow because 65536 in hex is "10000" and iBeacons are only allowed to broadcast 4 hex digits... Do not worry because this is also built in as well. Everything will verify correctly and your signal will be created. For you to decompose this from hex back down to usable numbers, I am able to send the source as well.

Best of luck guys,
Skylar Rudolph.

If this post helped you at all, please feel free to donate to my BitCoin Wallet Address: 1G6boGibqU14pHxMf5zNK8Gmo9uiAgerbt






Monday, February 10, 2014

How to Get Flappy Bird Back! (With Photos)

So, you decided that you have had enough of Flappy Bird and deleted it when you thought you had the chance to reinstall it from Apple's App Store. (+1 because this included myself)

1.) Go to iTunes and tap on your Apps

2.) Verify that you have Flappy Bird on your computer

3.) Now plug in your iPhone, and click on the Apps tab located inside of that window.


4.) Sort for Flappy Bird

5.) Click the install button and enjoy Flappy Bird if you deleted it!

Wednesday, February 5, 2014

Creeping out of the Woodwork (Literally)

Hi fans,

I know that it has been ~ 2 years since my last post, but I wanted to update everyone on where I am at now.

Some new side projects that I am working on that have been keeping me active during this FREEZING winter season (cough, cough, Pennsylvania).

1.) I have become infatuated with the uses of iBeacon (Apple's Bluetooth Low Energy protocol) so I have looked into developing a module for my personal needs.

What do you need?

  • BLE112/BLED112/BLE113 bluetooth chip from BlueGiga
  • TI CC Debugger (this will be used for flashing the firmware onto the chip)
  • BLE112/BLE113 breakout board (This will be the PCB for your BLE11X device)
  • Breadboard
  • Wires
  • Header pins
  • Windows PC
  • Soldering Iron
  • Solder
  • Steady Hand
  • Ventilation


Once you have all of these you will need to go to here.

Here you will find all of the necessary uses for your iBeacon. I will update all of you when my iBeacon components arrive.

2.) Another project that I am working on is an in-house CNC machine. This is taking up most of my time because of the ~ 50 pieces that it contains. This will be a fun project for me to work on because I have always wanted a CNC of my own to do custom cuts with. The parts in total compound rather quickly (if you don't have ANY work tools at home, or are a recent college graduate). By the time that you acquire a band saw, drill press, wood, accessories (safety first), along with the precious time it takes to cut everything out it is becoming a hobby that I respect the longer that I do it. Mostly because I want to see it become assembled over time. My first "full" cut will be a Hnefatafl board. Right now I am about 1/2 way done cutting each stencil out with an X-acto knife and gluing them properly to my 1/2" birch stock. Please show your interest and likes when you can!

Here is what the final CNC will look like.