Mahdi Yusuf

Mahdi Yusuf


Think More > Think Different

Tuesday, February 28, 2012

Thinking is probably the thing you do most every single day. Its also probably the thing you do constantly every single day. It is the most important thing.

How many of these thoughts are unique? How many of them a never spoken? It’s an interesting concept to me. If you had to put a number to the unique thoughts you have in a single day how many would there be? By unique I mean something out of the ordinary for your day to day life, something that forces your mind from its regular hamster wheel. When do they happen? What triggers them?

In my regular day I find myself thinking about the same stuff, reading the same stuff, I am starting to frankly lose interest in a lot of it. Nothing truly inspired, nothing truly ventured. 

Every once in awhile, I get really excited about something, or read someone’s pure thoughts on something which is awesome, but those are few and far between. Often times it comes from just letting my mind wonder, not thinking about the million tiny things in my day, but just pure thought about pretty much anything. Not being influenced to think or see what everyone else is seeing, like the latest blog post or coolest new app. Just individual singular thought.

You’ll be surprised, where your mind goes. 

Think about it. 


This post is filed under #think #thoughts

Discussion


7 Places for Social Developers

Monday, February 6, 2012

Forrst

is a new place for developers and designers to share inspiring code, screenshots and links.If you ever wanted other professionals frank opinion on a piece of code or can’t make a decision between one logo or the other! Forrst is the place for you. It is just ramping up and is still in invite only stage, but I urge you to get on and get to sharing. Nothing better than being popular on the new it site.

Twitter

if you still think twitter is place for little girls to tweet about their Bieber fever you are right. Although beyond that, [amazing reality] so are favorite products and software developers  sharing latest updates and interesting articles. I use Twitter as my news aggregator. If I see the same story tweeted by a few people, usually give it a further look. Tweets are a great way to keep in touch, if you follow the right people!

Blog

now you might be saying madness, I don’t want to have a blog. I am not hipster, who shares everything in hopes to have a movie written about them when they die. Although blogs are the best place to cultivate that particular type of pipe dream. It will also allow you share things you find cool, or link you wished you had bookmarked, its a ways to track your progress as a developer and as a human being. Maybe even open doors for you in the future. 

Github

what happens to code you write and keep on your hard drive and you dont let anyone use. It never gets run, or used beyond what it was intended for. In my mind that is a complete and full fledged fail. Get on Github, and set your code free. Great way to learn new things as well. Pick a language and start reading.

Stackoverflow

 are you the type of person who asks a ton of questions and expects answers? Look no further the greatest Q&A site to ever hit the internet. Now that they are spinning off various sister sites even better time to join. Want to know more about cooking, coding, ubuntu, or maybe even something new. Vast knowledge base and I would recommend this for any developer who wants to know more.

HackerNews

Do you want a legion of smart developer send links to technical articles and interesting things in the news? If so get ready to probably waste [gain knowledge] an hour a day there easily hitting refresh. Check it out.

Reddit

Now you may thinks Reddit is mostly used for finding cool pictures of cats and place where you can make fun of people failing. Although that may be true there is a vast developer community on there that have various discussions about development broken up is more ways you can imagine in subreddits, chime in! 

Coderwall

I know I said 7 but I can’t leave out this out for those of us who love competition, and awesome tracking of development achievements! Coderwall goes through your github repositories and gives you badass achievements on code you develop; they recently launched new profile pages that look awesome! Try it out! 

—This post has been inspired by Scott Hanselman talk here


Discussion


Introducing Pycoder’s Weekly

Monday, February 6, 2012

The last couple of weeks Mike Grouchy and I have been talking about the python newsletter that we would want to recieve weekly. A curated collection of the best python news, articles and projects from around the internet delivered to your inbox in a beautiful package weekly.

             

The result of this talk has been Pycoders Weekly. The first issue is set to drop on Friday, February 17th, we hope you like it.

If you have created some content or run some project that you think should be in Pycoders Weekly contact Mike or me and let us know.


This post is filed under #python #code #weekly #newsletter #developer

Discussion


Everyone is thinking why in the world would anyone pick static, when you can be dynamic, so much more agile bro. Usually the thought process is what language am I most proficient in, that can do the job. Totally not a bad way to go about it. Now does this choice affect anything else? Testing? Speed of development? Robustness?

Dynamic vs. Static

Dynamic languages are languages that don’t necessarily need variables to be declared before they are used. Examples of dynamic languages are Python, Ruby, and PHP. So in dynamic languages the following is possible:

We have successfully assigned a value to variable without declaring it before hand. Simple enough, try doing this in Java (you can’t). This can *increase* development speed, without having to write boilerplate code. This can somewhat be a double edge sword, since dynamic languages types are checked during runtime, there is no way to tell if there is a bug in code until it is run. I know you can test, but you can’t test for everything. You can’t test for everything. Here is an example albeit trivial.

Now if you are raging to some serious dubstep, its easy enough to miss that small typo, you go screw it and do it live, and deploy to production. Python will simply create the new variable and not a single thing will be said.

Only you can stop bugs in production!

Static languages are languages that variables need to be declared before use and type checking is done at compile time. Examples of static languages include Java, C, and C++. So in static languages the following is enforced

Many argue this increases robustness as well as decrease chances of Runtime Errors. Since the compiler will catch those horrible horrible mistakes you made throughout your code. Your methods contracts are tighter, downside to this is crap ton of boilerplate code.

Weak and Strong Typing can be often be confused with dynamic and static languages. Weak typed languages can lead to philosophical questions like what does the number 2 added to the word ‘two’ give you? Things like this are possible with a weak typed language.

Traditionally languages may place restriction on what transaction may occur for example in a strong typed language adding a string and integer will result in a type error as shown below.

Conclusion

Regardless of where you land on this discussion, claiming one is better than the other would lead to flame war, but there are places where each is strong.

Dynamic languages are good for fast quick development cycles and prototyping, while static languages are better suited to longer development cycles where trivial bugs could be extremely costly (telecommunication systems, air traffic control).

For example if some giant company called Moo Corp. spent millions of dollars on QA and Testing and a bug somehow gets into the field, to fix it would mean another round of testing. When sitting in that chair the choice is clear static languages FTW, its a hard job but someone has to milk the cows.

Test, test, and test.

Just a little food for thought, for when you are starting your next project. You never know what limitations you maybe placing on yourself and your team.

What do you do consider when selecting a programming language for a project?


Discussion


The Setup

Sunday, January 29, 2012

There has been this trend of developers sharing there development set ups. I thought it might be cool to share the tools I use during development. Maybe even get some of my friends to share the tools they love to use during development. Hopefully, I can turn you on to some cool programs or equipment. 

Hardware

I am constantly on various virtual machines both at work and home. At work we have several machines that we use for visualization the host system for those is Debian Squeeze. We use KVM for our virtualization solution, its quite awesome. The main benefit is having tight integration to the hardware is being run which gives us the biggest bang for our buck. Plus it comes with a nice dashboard for checking hard drive space and memory/cpu usage on each virtual machine. For local development I use VirtualBox and Vagrant  for spinning up web development machines, this is ideal for having the same development environment as co-workers and being able to spin them up/down quickly and reliably. 

My main desktop machine at home is a gaming machine; I built a few years ago. Nothing to brag about right now. I dual boot Windows 7 (gaming), and Ubuntu 10.10 Maverick the last update until they added that abomination called Unity, although I hear its getting better. I have two Samsung SME2320 23’ High Definition screens, which certainly get the job done for both work and leisure. 

I recently purchased two KRK Rokit 5 studio monitors, which simultaneously brought out the sound quality snob in me.

Is this FLAC?

These speakers are awesome, you can hear every detail in every song.  These will definitely get your neighbours Wub Wubin’ to the beat. 

I am not usually too far away from one of my desktops, but when I am I use 13” Macbook Pro (8 GB), I really have been fighting the urge to get an SSD for now, I can see this changing quickly. I hate doing any real development on this machine, I have been babied by having two screen everywhere and being crouched over a laptop isn’t something I find comfortable or productive. 

For reading I have a Kindle which is awesome for fiction,  I still find myself buying hard copies of all my reference books though. They still haven’t found a good way to earmark pages like I can with a real book. No iPad, thankfully. I have an iPhone 4s and before that Google Nexus S. Its really like Coke and Pepsi to me.

I totally just lied there, I love Pepsi so much more. 

Coke is just slightly ahead at the moment. There are things I love about both OSes, but I don’t claim one to be better than the other.

Software

I write code in several languages mostly bouncing between Python and Java. I hate the fact I have different coding setup for each, right tools for the job, I guess. For general file editing and Python development I use Sublime Text, it’s cross platform and awesome editor written in Python. When I am not there and writing C or Java code I am usually in Eclipse.  I use git for version control, mostly hosted on Github. I keep trying to move to Vim full time, I will eventually get there. 

For web development I use Django, because its awesome. I have been playing with Flask more and more, I like it, simple clean, easy to read. I am getting more into this JavaScript, starting to slowly love it. Usual suspects here, Node.js and jQuery.

I am in the terminal quite a bit I use TotalTerminal on the OS X machine, and Terminator on the Ubuntu machines. For my shell I use zsh, it changed my life. 

For music, I will forever be loyal to Grooveshark, the selection is just better, the app is fairly priced, and beautiful application all round. I have tried Rdio, but it is simply lacking in selection and compensates by providing horrible covers instead, which is pure bullshit. I don’t keep a whole lot of music on my machine, I don’t really see the point EVERYTHING is on the internet. 

For chat I use Empathy or Adium, mostly logged in through Gtalk. Google Chrome for browsing and Gmail for email. I have a Bamboo Connect for little webcomics

For media, I have an jail broken Apple TV w/ Plex. I use the service that shall not be mentioned for downloading data ;). Message me if you didn’t get that last comment.

Dream Machine

If practicality and expense were thrown out the window, this would be the machine I would get.

If we are talking reasonable, I would like to get a couple 27” Apple Thunderbolt Display for pure development awesomeness. I would love to get this microphone for audio recording, I always wanted to take my shot at being a radio disk jockey. 

This next song is going out to all the broken hearts out there.

I am actually not that far away from what I actually need. Little bit more desk space wouldn’t hurt either. 

As long as were asking for things, a more beautiful Ubuntu, and a better development Windows.


This post is filed under #macbook pro #code #developer tools #ide #software

Discussion




Copyright 2012 Mahdi Yusuf
Errrrday I be programmin' (oh and hustlin' too)