The First Lines of Scratch

Scratch should be seen as a tricycle and meant to be used as an introduction to programming concepts. You can learn more on Scratch MIT.

It's meant to be fun, safe, and reasonably representative, but it's also designed to be outgrown and if you find your lessons are not being met with the same enthusiasm you can move on to more complicated languages.

Having said that, I ran a Scratch game development contests for some time now with the kids in the family, which has been met with a lot of enjoyment. And I have seen my nieces and nephews make some really great stuff with Scratch.

And I have been able to create a reasonably accurate orbital mechanics simulation with it. But that is the subject of another post.

What is nice is that the language is based on Smalltalk. Think of it as a springboard into Javascript. There are plenty of powerful features including support for arrays, message-passing, and custom blocks that will allow them to stretch their programming muscles and get enjoyment of making something for real. One of the latest feature now allows kids to store data on the cloud. My niece who just turned seven has used it as a way for her to store high score data and she and her friends play against one another.

You can do a lot of neat things with it which even a little bit older children can enjoy.

But since kids like to see what they have made programming can be a challenge to teach. And other languages have a higher upfront cost when it comes to getting things on the screen. That is why Scratch comes with two graphic editors as well as a basic but serviceable audio capture and editing tool.

I taught my 14 yo niece programming with JavaScript and she loved it. She liked that the language was easy to write and read, and it is more forgiving with the syntax than other language. And she was able to go home and continue on with what we learned since you don't need much except a browser and a text editor. Both of which are not hard to come by.


Sit Up Straight!

Computer Posture A Must

…for health.

In all seriousness. When you sit at a computer all day you will eventually realize that it is hard. Most people will tell you that it is a cushy job that doesn't take an effort. We will not go into that right now. What I want to cover is that, while it is part of your daily life, it doesn't have to be. I used to be in the same position. Bad back, and a whole lot more. But while bad posture can stem from an injury, genetic predisposition, or another case, the truth is that most of us just have the bad habit of bad posture.

Still, with time and effort much of what we have done can be reversed, at least that is what they told me. And when I began undergoing physical therapy, however the thing that surprised me the most is that the clinic was and probably still is full of young people exactly like me.

They were mostly guys, most them were there because they have been playing too many computer games or because, like myself use a computer a lot. But it can be because they have an addiction to smartphones or simply work an office jobs etc.

If you choose a career in the tech industry it will happen to a lot of you too… I guarantee it.

I've been trying to not slouch which has made things a lot easier. When I use my computer, I sit up straight and keep my eye level with the top of the monitor.

Any time I have my phone in hand I hold it up near eye level. Looking down at your phone between your legs is the worst thing that you can do for your posture apparently.

Another thing that I learned was that you should avoid sitting in "office chairs" with low backs.

One problem is that because they're common in offices, where your well being is rarely important, that they must be good; they're not. Get a high backed chair that you'd typically associate with executives/ your boss. Try out a few chairs, see which fit your straight back best.

A nearby shop should have a show floor with chairs to test.

The chair I use is a Steelcase Leap, and it cost about a considerable amount, but it was by far the chair I spend the most time in, in the entire house.

I've had it for years, and it keeps my back straight, my arms level, and is over all the most comfortable desk chair I've ever owned. I can sit in it for hours without any back, neck or wrist fatigue.

Because trust me, you will get problems eventually, you can avoid some of them, or you can reduce the damage ahead of time.

It may seem bad, for some people it will be much, much worse.


No Boat Fishing in Miami

Alright, so I have a boat, but I don't always feel like getting it out to go fishing. That is where no boat fishing comes in and there are actually a couple of good places here to do that.

One of them is Black Point Marina in Cutler Bay.

We like to park on the left side of the channel, from there you can walk down the long trail – you can't miss it, it runs right along the channel where the boats taxi out into the bay. Once you reach the concrete walking path that ends continue on until you get around channel. You should see "Number 15-13", you can't miss them they're big red and green diamond shaped signs in the water of the channel.

From here we just cast a line and you'll reel in fish all day right there. They love hanging around the wall drop of the shore and center of the channel.

The places around marinas usually have good places to fish. You may have to walk around a bit to find a good spot, but that's part of the game.

For tackle, get a 7 foot medium/heavy graphite spinning rod. I like the Calico Jacks; I got mine from Dick's for $60. For a reel, get a Penn Fierce 3000 for $50. Put 20 pound mono backing on the reel, and top that with 200 yards of 30 pound braided line (I like Power Pro). At the end of the braided line, tie on 4 feet of 20# flourocarbon, and then tie on a lure. Cheap lures that work really well are 3/8 or 1/2oz white bucktails. I also like Mirrolure Mirrodyne 3/8 oz lures. Another approach you can take is to get some 1/4 oz jigheads and some Gulp shrimp.

With that setup, you can pretty much catch anything in Florida short of an adult tarpon.

Brings your friends, family and some beer, and it is easy to make a day out of it.


Today: ETL

I am going to be looking at different areas of the tech industry and try and shed some light on the different roles you may want to fill. I plan for this to be an ongoing series and see if people are interested in exploring it further.

ETL Developer

ETL developers do DB development, especially in big data. This is a process that requires a lot of planning before moving on to the implementation, so I wouldn't necessarily call it "day to day operations," at least not as a whole.

Let's clear up the terminology a bit, ETL = Extract, Transform and Load. Basically you're going to take data from one source and transform it then load it to another place but that other place is carefully crafted to fit the data and be expanded on when the time comes.

In some case it could be simple, say mapping fields between two databases, but that is rarely the case. Usually the work is more complicated, and an ETL developer performing mathematical operations on some fields, combining it with other data sources, then loading them into a final location.

Size matters here, since you can't look at it as moving small databases around, even in a small company you will be handling many TB of data.

While the size of the company may dictate how much responsibility your job entails, it does not mean that you will necessarily be working with less data.

In a small to medium size companies, the developer could also be the database developer and the ETL developer, with the position rolled into one. A larger company will likely fill the positions with specialized roles like people who only do ETL, people who just do Database development.

Often the Database developer will work with an application developer to develop a database.

The Load

Since the volume of data is so big you will never find the ETL developers working with the data loads manually. In most cases that would be impossible.

Instead you will find them in the heavily invested in the design process using tools that allow them to manipulate the data on schedule. That involves a lot of data modeling due to the size of the job.

Why? Becuse can't just copy and paste your data into SQLite and call it a day when you need to scan a 100 TB of data and actually return meaningful resuls as fast as possible.

People want the data returned from their query, and they want it now.

The team that is responsible for infrastructure and ETL of any big data platform is mainly composed of people with software engineering backgrounds. Most of their time is spent designing the ETL and making sure it is running without error.

And running without error is definitely a aspect that has little room for compromise, you don't want to be exposed to data loss.

As you can see, ETL development is a subset of database development that focuses on the pipeline/tools. This often rolled together, being used to extract data from a data source, transform it into something useful, and load it into a database.

It may sound straight forward but it is more involved than you can imagine.

No matter how you look at it, there are many aspects to overall database development, so ETL is just one part. At a small company, a database developer might do lots of different database development tasks, but at a larger company, they will be more likely to have specific people writing reports, doing ETL, etc.


Stepping Into the Boat Shoes

For me salt water runs through my veins, and with that so does the urge to own a boat. So it wasn't too long after I moved out that I bought my own boat. It wasn't anything special, but it was mine. One question that friends often ask me is how they can get into boating, they make suggestions like joining a boating club, etc.

I recently got the question again so I wanted to break it down a little, and see what you think so that you can make an informed decision of your own.

One way is the club, but look at about spending $300 a month (docking a boat is expensive as well) but with a club you can reserve a boat for whatever day you are planning.

When you get into boating there are lots of questions to be considered.

Some of them include:

  1. Honestly, how often are you really going to use the boat?
  2. What does a typical boat rental cost in your area? A one off rental is often more affordable than being in a club!
  3. When you join a club, will you be able to keep the boat out an extra hour, day, etc, can you? Not all of them allow for this so keep an eye out for it when you are doing the paper work.
  4. Cost. Are there any other costs to taking the boat out (gas, etc)? You bet! And you will probably spend about twice on fuel than for a car traveling the same distance.
  5. When you join a club, do they have enough boats? Not all clubs can adequately serves your purposes on popular weekends, some of these include: memorial day, labor day, etc?
  6. What happens when the club boat has a mechanical issue, who pays? Hint, it might be you!
  7. Age plays a role here as well, does the club have new boats, older boats that are well maintained? You will find a mix in most clubs, but this can be an indication that they are worth the price.
  8. Let me just through this out there, how is insurance handled?

That list should get you going and help you make some thoughts on what it means to join, what is essentially a timeshare. Clubs cost a lot, owning a boat costs a lot. And either might be a good fit for you.

But if you decide to buy, there is the added expense of finding a place to store it. And they charge by the foot if you dock it. If you do not have a suitable place to keep it docked, you will need to keep it on a trailer which means that you need to have a suitable tow vehicle.


  • Do you have the money on hand to buy a boat outright? If not you will have to find another way to finance it, and if that is the case the extra expense that come with it might be out of the question.
  • Then, unless you have experience, you will have to find one that fits. Do you know for sure what kind of boat you want?

Getting into boating isn't hard, especially if you have the money, but the reason most people turn away from the idea is because they do not realize how much goes along with it.

Clubs might be a way in to the world if you've never owned a boat before. They allow you to discover if it's right for you. But don't be surprised when you have to sign a big contract. And shell out thousands a year.


The Mystery Revealed

I have posted a couple of times about posture. Mainly, because I had bad posture. BUT then I realized. How can you tell if you also have bad posture? And the answer is, unless you know what you are looking at, or you experience pain, discomfort you may not actually know what it is.

So I am going to try and make some effort to clear that up today.

Your posture is caused by a series of imbalances and weaknesses. Which are caused by a weak and loose upper back and posterior delts compared to tight(er) pecs and front deltoids. Especially seeing how the pec minor (upper pec) attaches all the way back to the scapula so it being tight can cause the "slouching" posture.

The main cause of this imbalance is once again due to sitting too much. This is referred to as lumbar lordosis, due to weak abdominal muscles and hamstrings/glutes, and tight quads and hip flexors. Regarding the lordosis, people have suggested stretching your hip flexors and quads, and doing abs and hamstring/glute work: Bulgarian Split Squats are great, romanian deadlifts, or barbell/dumbbell hip thrusts, or hip "bridges").

These imbalances are very frequent since many people tend to gloss over pulling exercises in favour of more "trendy" pushing, like bench press and shoulder presses, but having a sedentary lifestyle doesn't help as well.

So, you wanna work on your scapular retraction for the kyphosis and on strengthening your core for the lordosis.

Some exercises that work on this are barbell and cable rows, reverse flies, and facepulls. Facepulls were a huge help when I was correcting my posture. But don't run out just yet, with facepulls it is important to remember to do low weight high reps on this, focusing on form, the muscles they target are really small so they cant sustain as much overload as other bigger muscles.

High rep, good form, low weight.

They helped resolve all the knots I'd get in my upper back. Great, underutilized exercise! And while this worked for me, don't worry if you don't get the same results. Everybody has different bad posture. And getting the right exercise will offer dramatic improvements to your posture. Once you've fixed these issues is when the real work really begins.

Posture is mainly a matter of habit once you have taken care of any underlying issues. The reason being that once you get into a specific habit, for example due to a weak back, you will find it hard to get out of it even if you have fixed the underlying issues, i.e. a stronger back, etc.

You need to be very conscious, at least initially, of your posture.

What I did was check my posture every couple of minutes or so and then if I found I was out of alignment, correct it.

Check it in every position you habitually move in:

  • is your posture good while taking a stroll?
  • While working on your computer?
  • When you're carrying grocery bags on only one arm?

It may take a couple of years, but in the end it is worth it, and it will leave you with a better quality of life.


Off to CodeCademy

I can't say that I know it, or that I have used it. If I had to, I would say that I poked around CodeCademy to see what all the fuss was about. And that is what I have been hearing, fuss. And that doesn't always translate to quality. While, it seems decent for teaching beginners but In all honesty I prefer just reading up on the documentation and following written tutorials if I am trying to understand a new technology or language.

Yet, CodeCademy was making some waves and I do tend to checkout the source of those waves. What I kept hearing, where people say that it was pretty good and easy to use. What I saw though was that you have to really make it a point to understand what's going on.

I watched somebody use the Python course, and they were pleased at their pace and with everything that they "learned". When I talked to them later they were about halfway through the course, yet they hadn't grasped everything leading up to that point. This only became obvious when they tried moving on to the next exercise and they were completely lost.

The basic foundation was simply not there.

From my exposure I would say that CodeCademy is really only good to give people a taste of programming.

It will be hard to build anything past a simple static website after completing most of it. In the end I feel like it is a great way to get my feet wet in new technologies and may ignite a few peoples interest in programming.

As far as I can tell, the exercises are short and simple, yet that is rarely how programming works.


If (Web Developer == Software Engineer)

What's In A Title?

Seriously, is there really that much of a difference between these two titles anymore? I mean it's pretty much up to somebody in HR, and how they decide isn't very in tune with what is what in the tech world. I assume that is the same for the other office chairs they fill, but that isn't my part of the office. Still it can get annoying, especially when they reclassify titles, usually with a huge salary difference.

And trust me, they do!

If you have been interviewed by them you will have noticed that they rarely know anything, yet they use the terms interchangeable and try and speak as if they have more knowledge about the subjects than you do. If they really did, they would be debugging the application, not sitting their hiring you to do it.

I will be fair. This is not true for all companies. In some companies, Web Developer and Software Engineer are two different positions.

In companies like that, WD will be focusing on front-end technology, SE will focus on back-end and system level programs.

In other companies, they are exactly the same thing and they will expect you to be a Jack of All Trades (and if it is a startup, master of them all as well). Some of the the companies I have worked with didn't even use one or the other.

I've been called an analyst, programmer, programmer analyst, engineer, developer all in the same job (partially by the same person). What did it mean in the end? That I was expected to fix things and add new features to a staggering behemoth that was in dire need of refactoring.

Did it happen?

Not all of it, but you can always pull a few levers and still look golden. But that is beside the point.

There's also another view which I should mention. The idea of a Software Engineer is sometimes more flexible. They think that you are in a hire position, meaning that you should be able to do web development as well. That is to say that you can build a billion dollar mobile app, write a complex desktop application and then jump in and write some low level C code. Whereas they see a Web Developer as somebody that is only expected to handle web/http applications.

You know; the holy trinity of HTML/Javascrit/CSS.

Still there is nothing keeping them in that category.

Anyone can call themselves a "software engineer" here in the US and you will encounter many software companies that call their employees software engineers because it is more in style right now than other titles. (It makes the company look bigger and more important.) The term "engineer" is not "protected" in that sense.

That is not true for other countries.

In some countries you can call yourself a Software Engineer only if you have the degree (e.g. Germany) and if they have the degree they will take offense when you use the term "without earning it." At least the import did at my last job. It was fun teasing him about it.

The truth is though, that today's Web Developer are able to do more and more. The web is also getting to be more like a real application so the difference is becoming blurred.

Many modern websites are more than just that — they are full web applications.

One that I had a lot to do with lately is Magento. nd to call that anything less than a complex eCommerce platform would be doing it a disservice.

It requires an understanding of an array of programming design patterns and paradigms in order to be able to use it. Yet due to the nature of the beast you would be called a Web Developer if names actually had meaning. So you could say that my appropriate title was Web Developer since it is after all a web application.

Which leads us to the question of the day; What's with the ->

Software Engineer/Software Developer/Software Programmer

These days the titles are used completely interchangeably and the terms are interchangeable, regardless of their historical meanings. Which I felt like I knew at one time. But then I realized that I didn't know anything.

And yet I am going to share my informal rule with you.

But in all seriousness, if you are concerned about what happens at the machine level or regard garbage collectors as a nice to have, you're probably a programmer.

That isn't true about a developer, there is a good chance that they are not going to even care about these aspects. What they are going to be concerned about is finding and leveraging tools to deliver rapid prototypes as well as new features to production. This will typically be in a business setting with end users who are not overly technical.

Then we have the engineer who focuses on building the tools that your developers focus on being extremely adept at using.

The engineer will focus more on delivering robust, quality solutions and providing guarantees of backwards compatibility, for users who are technically savvy.

Today well all see things less strict, though those differences are there they don't have different meanings, to recruiters/HR which are about as technical as a shaved monkey and think there should be a difference.

Oh well, throw them a banana for trying.


You Can’t Force It

Posture, it is the bane of the computer bound employee. And no matter where you work you will see the slackers slouching or resting at comfy angles instead of focusing on improving their posture. And why blame them? This is actually hard to do. And unless you work toward it, the "ideal" posture cannot be forced for very long.

Especially for someone with significant muscular imbalance, stretch and strengthen are the major players here, so never discount that aspect as well.

The "ideal" posture is butt all the way to the back of the chair. If you draw a straight line down the side of the body, your ear, shoulder joint and hip joint should be relatively vertical to each other.

The further forward you are, the more strain you place on your neck, your back, and other joints. Whereas the majority of your joints should be in neutral positions, which are positions that allow the straight flow of blood. If you can't, then go for a 90 degree angle. That is your arm is allowed to flow down from the should, bend, make a 90° bend and rest without stress on your mouse. If you're on a laptop, you'll notice that these rules are actually impossible. So you'll either have to use an external monitor or an external keyboard.

And yes, ideally take breaks as often as feasible. I was told that you should move around and stretch every half hour to forty-five minutes. But when you are busy, in the middle of something, or concentrated, I tend to forget. Still I often shift my position and generally try to keep an upright but soft posture.

It's good to allow yourself some room to sit in a comfortable way without getting too attached to one way, where you may develop a bad habit.


Took to the Surface Like A Pro

Or How the Surface Pro Became My Main Machine

I've been using my Surface Pro for a while now, and while I wasn't expecting it to it has become my main development machine. I thought that it was going to be small, and in truth it is, but if you need to you can always connect it to an external monitor so size wasn't as big of an issue as I had first imagined.

Technically speaking the Surface wasn't really a down grade from my machine (my desktop did everything I needed and more, even though it was older), aside from the 4GB RAM limitation (my old desktop had 8GB), it is a pretty much comparable machine. And I have replaced my previous dev machine on the go, my Macbook Air 11" with it.

And I know that people say that they "develope" but really just means that they use it to write some simple scripts. I will give you a sense of what I'm using it for:

  • PHP/HTML/JS/CSS development in Sublime Text
  • Visual Studio
  • Server management in Powershell and cygwin


Overall, I'm super happy I got the Surface Pro, even though I didn't think that that would ever be something I would say.

And it might be partially because I didn't reallize how much I was not actually using. And if I had the chance to add to it I couldn't think of anything. Since I don't ever feel like it's lacking, and in fact I am gaining more from it since it also has the convenience of being a tablet when not being used for serious work.

As I said I ditched my Macbook Air 11", and it gets more use than my Macbook Pro 13" even though I have set it up to dual booting Mountain Lion and Windows 8.

One benefit I had not really anticipated when I bought the Surface was the remote debugging in Visual Studio. What a great feautre that has turned out to be.

Since I have the chane to hook it up to a monitor I get the added benefit of working on an app on the desktop which can be quickly deployed and debuged on the Surface. This also allows me to test all of the touch screen capabilities But since it goes back and forth so easily I can do the same in reverse from the Surface to the desktop and test things there as well.

It is extremely convenient and flexible. But flexibility is a thing that can get in the was, especially if you are using it on a soft surface. What I mean is that the keyboard sometimes flexes down just enough to not register a bunch of keystrokes which is a pain in the neck because you basically need to redo the last sequence and this breaks your concentration.

That said, it has so many features that have become very useful to me. And having a Surface Pro with an external monitor, keyboard, and mouse is pretty nice.

You can easily put your IDE on the big screen, and keep mail or docs up on the small screen.

And having the ability to debug a touch app on the small screen has saved me some time which has made it a great investment. Who would have known?