January 27, 2014
SublimeText configuration - basic

One of Sublime Text’s many great features is the multitude of plugins/packages readily available, along with the community of devs that create and support them.

This is a list of some of the plugins I use as a web developer, that I think really help my productivity and help me code faster.

1. Package Control

Before you install any plugins in sublime, Package Control is an absolute must that allows you to manage all your packages/plugins through a few keystrokes.

Once installed, press Ctrl+Shift+P or Cmd+Shift+P (mac) and ‘Install package’ to bring up all packages available in the repository.

Get package control

2. Emmet (formerly Zen Coding)

Emmet is a dream to work with for any web developer looking to greatly reduce their keystrokes in both HTML and CSS. HTML abbreviations along with fuzzy logic for CSS are very powerful features that, with a bit of practice, can greatly improve coding efficiency. Let’s say you wanted to create the following structure in HTML:

You might be used to typing ‘div’ or ‘ul’ followed by tab for example to create those nodes. This does make coding quicker but still involves a fair amount of typing. To create the same structure with Emmet, all you need to do is enter the below followed by tab.

That’s only 21 characters compared to 161, a huge time saver! Not only that, Emmet will allow you to tab between key points – in this case the a href and a values.

It’s quite easy to see what’s going on with this example. The hash ‘#’ and dot ‘.’ symbols create the ids and classes, the greater than ‘>’ symbol will create following HTML elements as a child and asterisk ‘*’ repeats elements. Other useful operators include plus ‘+’ to append another element at same level and brackets ‘()’ to group elements.

Here’s an example of CSS with Emmet. Consider:

This can be created by inputting:

Again, 36 characters compared to 162. All you need to do is type a few characters of the style you want, followed by a value (if relevant) and Emmet will try and work out what styles you’re trying to create with fuzzy logic. It will also set multiple cursors and tabbing where relevant.

Get Emmet for Sublime

3. AutoFileName

One of the (very few) things I missed when switching to Sublime from Dreamweaver was the ability to drag and drop assets, files and images from the file panel into code view.

AutoFileName in my opinion is just as good, if not better, than Dreamweaver drag and drop as it removes the need to use the mouse to insert assets. When entering an img src=”“, a href=”” or background-image:url(…); for example, a mini file browser will appear that allows you to (fuzzy) search and select assets.

Inserting images will even display and create the width and height parameters automatically.

Get AutoFileName

4. Sidebar Enchantments

Whilst I’m trying to move to a keyboard only approach, I still find I need to use the sidebar on occasion and sidebar enhancements gives you many additional features that don’t come natively with Sublime such as duplicating files and creating new folders.

These are four great plugins that make sublime easier and more fun to work with.

June 29, 2013
Teaching in the Information age:

I recently spent some time at a special High School located on the West side of Chicago whose focus is unique among the schools that I know of. They are a start-up Tech High School. Determined to teach “inner-city” youth technology along with the standards of Math, English, Chemistry etc. I’d like to respond to what I witnessed there. This response should be attributed to any and all such schools that attempt to teach modern programming and technology to children.

Now a little background. I spent the last two months of the school year with them. I was on staff to help finish the year for them (their prior teacher was gone and they needed someone to help finish off the year). Now this was critical for them as they needed someone there so they could graduate their first Senior class.

They also warned me. While most of the kids are great. They do have some that are just there because the school is near where they live and their parents see the school as a safe place for their kids to be. “So we have some kids who are not into learning about computers.” And some of them have disciplinary issues.

Now while there I witnessed how the structure that they were using to teach the kids operated. Classes were divided into “periods” and each period was 40 minutes long. Now before each class or “period” could get started your had to do a bit of paper work before hand, you had to take attendance and make sure each kid had to proper dress code attire etc. This “paper work” portion takes up about the first 10 to 15 minutes of your class time. So by the time all that is done and you get your kids to settle down…you’ve got about 25 maybe 30 minutes to actually teach the class.

Let me say that again for you, time to teach a programming class….. 25mins.

Now, a second problem, while most kids were very teachable you did have a number of kids that where problem cases. Disciplinary issues. After all this is a classically Chicago Public Schools charter school. And as they mentioned prior to my coming aboard. “Some of the children are here for other reasons and are not interested in learning computers”. Now these kids would do everything and anything to not do the work assigned for them and loved getting other kids to join in with them.

So why are they in a computer class? They are there because they have no other place to be. And it became the teachers job to effectively babysit for them. Unfortunately, having disruptive students in an already extremely time limited class is a recipe for No-One-Learning anything.

Some kids where always in “detention” in almost every class. So an entirely different approach has to be taken for those kids…I’ll get to that in a moment….

Another problem….no homework. Why in the name of the programming gods do you have a school that has a culture of NOT giving homework? You have class periods of effective teaching time ~30mins and you’re not giving homework? The excuse for this given was that the children don’t have computers at home. On the face of it that would be a compelling argument. After all they are poor kids. But when asked by me in each of my periods…all but one or two kids had computers at home?!

Now for those kids that have disciplinary issues you may be able to take those kids and expose them to different things that can be done on a computer. So instead of looking at code all day they could play with music making tools and various art making tools. If you have a kid that likes to draw then give him a digital pen and drawing pad and encourage him to draw in the computer. Some kids are bored out of their minds and revolt because they feel no one is listening to them. But if your program is so rigid that there is no time for discovery and exploration then all these kids walk away with is…”programming is boring”…..and you have failed (or succeeded depending on what your goals may actually be).

Yeah I said it…”depending on what your goals may actually be”.

Teaching a 21st century topic DEMANDS you not use 19th century techniques.

Part 1: The Problem: memorization, regurgitation and the industrial age.

The current method of teaching children and adults in higher education is outdated. (I am referring to topics related to the Sciences, Math, Comp Sci, and Modern Professional Programming. These are things that I know of and I’m speaking of both my personal experiences as a student in these subjects and as an educator of them.)

  • 40min long sessions
  • 20+ students per 1 instructor for a 40 minute course
  • Poor or un-ideal facilities
  • Students with discipline issues mixed in with “good” students

It is foolish to teach people methods of programing that have only existed within the past 20 years on a framework that was originally designed to train people as unthinking factory workers. What is critical to the technology field is to train children how to problem solve. Not just how to do task.

In a daily class, an instructor with more than 20 students constrained to teach in a 25 minute segment, an instructor is going to have only two MAYBE three questions that can be carefully answered to guide the student. That’s answering a question on the prior days lesson, NOT actually going over the current days lesson.

You can not properly teach programing in an engaging way in a class that last only 30 minutes. Period.

The class will very quickly de-evolve into a “I give up this is too hard” from the student’s perspective or a “just copy the code I create for you now and maybe it will make sense later” perspective from the instructor.

Part 2: A Solution: A programming course should have the following load out:

  • 8 students per 1 instructor per 2 to 3 hours per day course (three days class - two days lab).
  • 1 computer per student in a room that is spacious and not cramped. cables should be neatly stowed and nothing on the floor that students or instructor can trip over.
  • The standard for modern Professional Programming is the Mac, period. All machines must be Apple with a virtual machine installed for Windows app development on Windows.
  • A very large projector screen should be in front with the ability to be viewed…clearly…at the back of the room.

Class room machines internet access must be white-listed and direct pinpoint access to turning specific sites on and off given to individual instructors. This limits kids from being able to surf youtube when they should be engaged in class work.

I won’t limit what you should be focusing on in teaching topics here. If you want to guide underprivileged down the path of coding apps using proprietary tools and on proprietary platforms like Microsoft go ahead. I’m sure once those kids graduate they will be able to pay for the development tools and constant tools upgrades etc. that that path will eventually lead them down.

Ok, seriously, don’t teach using proprietary tools. Tools should be as open and free of proprietary control as possible. And understand where you want the kids to go…what path you want them to travel down. Are you teaching them fundamentals of programming? Are you teaching them how to build web apps? Are these apps native to one platform? Are they cross platform apps? What is the difference? Why is that important?

You should teach them tools and techniques that are relevant. Example, if you want to teach about mobile app development then teach them how to build apps for the top one or two platforms. At the time of this writing that is Apple and Google respectively.

If you want to teach them web application development then you need to know that world, and be able to predict where that world will be 4 to 5 years from now. How has that world changed in the past? What has changed? What has stayed the same? What will it look like based on that information 4 to 5 years from now? Are you teaching kids to build apps on Microsofts IIS server? Or Apache? Or Heroku? Why?

Do your decision makers understand that themselves? If not why are they your decision makers?

Anyway, for beginning students, depend on open standards tools and languages and avoid proprietary environments as much as possible.

Focus on teaching a specific language….something from the C family of languages…once students understand that language proceed to further development topics with that language….building on the knowledge previously learned.

Do this in a way that engages the kids. Show them how to make things dance on the computer screen. Show them examples of others making money using the same tools and techniques you are teaching them now….this will help facilitate inspiration.

If all a kid sees is code on the screen all day…that’s not exciting. Remember your teaching kids not adults. Engage them.

Your job should not be to teach them a classical computer science level understanding at first. That is boring for a mind used to youtube, xbox and playstation…inspire, encourage and engage them first. Show them things dancing on the screen. Show them animations and how to make them. Turn around time for things created and the results of those creations should be short. Seduce them into creating technology, plant seeds of inspiration, the rest will follow.

May 27, 2013
A Jedi’s weapons

Samurai carried a number of blades with them in feudal japan. As a serious programer I have a primary blade….my laptop. A secondary blade….multiple backup systems. And now the ability to focus while on the attack….the cone of silence.

I code to survive … one of the things I’ve found that works for me is travelling across Chicago’s cafe’s during a coding mission. To that end I’ve been challenged with the random disturbances that take place in these places….as a coder I can’t afford to be distracted by the noise generated around me.

Recently I purchased, at great need (and cost), a pair of Bose Noise canceling headphones. My god…they are awesome.

It’s like having my own personal cone of silence…chattering girlfriends = done, That guy on his cell phone = done.

For a programer, these are not a luxury….they are a requirement.

I hear nothing….and it…is….wonderful.

April 7, 2013
Who Am I? What Do I Want?

What Do I Want?

I want to spend the rest of my life. Teaching people technology, programming and the mathematics related to both. I want to teach them about Unix Servers and the Linux Operating system. I want to show them how to code on iPads and iPhones and Windows machines (and for that thing that does not exist yet). I want to teach them how to build flexible software that adapts to needed change.

I want them to learn that the only constant is change…

I want to show them wireless waves of energy and how to build apps that pay for their food and school. How to build their own computers and repair them. And most importantly how to teach others to do the same.

I want to teach poor Black kids, Latino kids, Asian kids and White kids. No offense to those who are economically secure but you don’t need me.

I want to impart to each of them that I come in contact with that they are strongest when they are helping each other. That according to God there is NO such thing as RACE….there is only the human race. And that the only way to get threw this (life) is together. ….click that link…..you will not be disappointed.

Probably the best position for someone like me is as a central node for multiple groups within a tech organization that focuses on this goal.

It is my objective, that once I am finished training as a software engineer that I will build this, if it does not already come into existence by that time.

Who Am I?

I’m Alfonso Rush…alephmage@gmail.com

April 3, 2013
Don’t stop moving…

In Savate class…in the ring…he told me “don’t stop moving”. A tall thin fellow. From a distance you would think Mike was an easy target. He didn’t apear very muscular at all..he wasn’t. But he moved like Spike Spiegel with the deadly precision of JCVD. He was my Boxe Francaise instructor and you did not want to be anywhere near his feet…and his feet where everywhere.

He would run me around the ring in exercises and I would be wasted. He would tell me “keep moving”…”even if you can’t do anything else…move” …”make me work to hit you”..”if you stop, then you turn into a nice big punching bag”….”So don’t stop moving”. In Savate the primary thing you learn to do..is MOVE. Just as in life….just keep moving.

I’ve got a circle of trusted souls around me at this time….One of them opened his door to me and offered me his couch. He told me….”you have friends”. I forgot about that.

I’ve been on this journey alone for so long…that I forgot about that. Another member of the circle helped me rent a truck so I could move my things out of my old place…If not for that help…my things would definitely have been put in the ally, my hand would have been shaken, a “good luck” given…and perhaps an offer made to drop me off at the nearest homeless shelter. That’s life.

But that didn’t happen. Instead, I have a temporary couch and I’m able to get some work done and continue interviews because of it.

I’m working to finish a few freelance client works and hoping something positive happens with the interviews I’ve had this week.

I’ve even applied to Dev Boot Camp….to continue my training….now ain’t that nuts?

One way or another I have to complete my (software engineer) training. Only then will I be prepared to do what I came here to do.

That “thing” I need to build….the reason I came to Code Academy* in the first place.

My circle of trusted souls have given me something just by being there….a bit of Hope.

But a part of me is still anxious…I’m just human.

"just keep moving"

*Now known as The Starter League

Liked posts on Tumblr: More liked posts »