Posts Tagged ‘Programming’

Short overview of living with Dyslexia.

Wednesday, May 15th, 2013

I have 3 learning Disabilities: Dyslexia, Dysnomia, and Dysgraphia. What follows is what it has been like for me over the course of my life.

During the first years of my schooling, I mirror wrote perfectly. My teachers claimed this was a phase and I would grow out of it. To some extent this is true but it is also a sign of a learning disability. At this time, I was not reading at a the level I should have been. My teachers told my parents they needed to read with me more. So they did. For 1st and 2nd grade, things followed the same path. My parents and I were frustrated.

Then I got lucky. My 3rd grade teacher, at the risk of her job, told my parents that I should be tested for Dyslexia. Her husband has it and I showed many of the signs. My parents had me tested by independent testing center and I was diagnosed with severe Dyslexia. I was lucky because I was on the path of falling through the cracks. To this day, after meetings and being tested many times, the school district I attended does not admit to me having any learning disability. I don’t know why but point is I was lucky. Many others are not as fortunate.

Since then, I was tutored outside of school. Since the district has never acknowledged my Dyslexia they did not help. Yes we tried. At a very early age, I knew what college I was going to. UW-Oshkosh. Why? Because they have one of the best programs for learning disabled students. I graduated with honors, a fair amount of student loan dept, and a Job. Fast forward to present day, I am working as a Software Engineer doing product development for a small IT shop.

During the years before college, there was a distinct difference between how teachers acted and how administration staff acted. To this day, I don’t know why the school district worked so hard to keep me from being labeled as LD. Even with that, all the teachers I had were more than willing to accommodate my disability. It was refreshing. It was the little things that made a big difference. Like most of them let me type papers instead of hand write them. Remember this was the days before computers were in every house.

In college, things got even better. Attending a school with a high percentage of learning disabled students was great. There was already a process in place set by the school to help LD students and the entire staff knew about it. On top of that, for the first time I was among other students who were like me. Since I was never in any special ed classes until college, I rarely met people like me. This was awesome. I had peers. I was not alone.

I have always been comfortable with telling people of my disabilities and have never tried to hide it. This continued as I entered my professional life. I don’t hide and in fact I am upfront with any potential employers. I explain to them what I have, how it affects me, and how it likely be show up in my day to day activities. Again, I have found that being up front is a lot less stressful than worrying about being “caught”.

Generally speaking, I have found that that being open and honest about being Dyslexic is the best course of action. People will generally do the right thing. It also helps that I don’t use my disabilities to take advantage of people kindness. Just because I have Dyslexia doesn’t mean I want to be treated differently. What I want is to do tasks I am good at and can do well.

Not everything is unicorns and rainbows. I still read and write at a very low grade level. It has been a while since I have been tested but I would guess I am still below a High School level. Not being able to speak a simple word in front of a customer is always fun. Then there is the issue of when people try to sympathise.

I know people mean well when they say things like “I read slow too” or “My spelling sucks too” but they have no idea what it is like. Worse than that is when people try to marginalize what it is like. For example: I dislike doing software documentation, well any documentation. I know it needs to get done and it is part of my job. It gets done but I hate it. Really hate. When I explain this to people, some will tell me they hate it too or everyone hates it. What they don’t understand is I don’t hate because it is documentation, I hate it because writing for me is terribly difficult for me. I would much rather being doing stuff I am good at. Unfortunately trying to explain this to people comes off as whining or excuses. Someday I will figure it out.

All in all, these are small gripes in the grand scheme of life.

This was very brief and could easily go in great detail. I know. This is the start of a topic I hope to cover as I write more. Comments or questions always welcome.

For more infomation on the learning disabilities that I and many others live with check out the followng links:
http://en.wikipedia.org/wiki/Dyslexia

http://en.wikipedia.org/wiki/Dysnomia_(disorder)

http://en.wikipedia.org/wiki/Dysgraphia

http://www.interdys.org/

Why slow is fast.

Saturday, May 14th, 2011

Recently, I have been thinking about an old fable. I am sure that is was read to you as a toddler or maybe you read it as a kid. The Tortoise and the Hare is a fable about a hare who challenges a tortoise to a race. The story ends with the slow and steady tortoise beating the hare in the race. One of the interpretation of this story is haste makes waste. I believe this fable has some serious lessons for any one who works with software development.

In college, Computer Science students learn about software development models like Waterfall or Agile Development. The students learn why structure is needed to effectively develop software. They are also taught the downfalls of the lack of structure. I, like may students, learned all of this in college. Recently, this lesson was brought home and I learned first hand why the tortoise is so damn fast.

The hare from the fable has some very appealing attributes on first look. In terms of software development, The hare starts off strong. He produces code sooner and boy can he code. He can also adjust to changes in design and requirements faster. This sounds great doesn’t? I mean who wouldn’t want all of this?

The tortoise on the flip side has to gather requirements and write designs. This is all before coding can even begin. The tortoise has one thing, a process. He knows that following his process will result in a solid product what out anything missed. So he just plugs away, slow and steady.

The devil is in the details. Or so they say. A deeper look at the hare and the flaws become visible. The hare relies on sheer speed. The sheer speed can only continue for a finite amount of time. There is no time for a process or any structure. This means requirements are missed, code is sloppy, and technical dept is being added at a crazy rate. At some point, the hare will hit a wall. This wall has many forms. In my case, the wall is an endless loop of adding and removing requirements and bug fixes.

The tortoise on the other hand is consistent. The code is produced in a consistent manner. The Tortoise’s output is also consistent. Since he has a process, he can accurately estimate when a feature or fix will be completed. In the end, the tortoise will pass by the hare and will do so with a generally better product.

I always knew having a process was needed. Hell, we wouldn’t learn it in college or have people much smarter than me publish books on the subject if it wasn’t important. The thing I didn’t know is the subtleness of the problems that start to creep up. At first it is minor annoyances like having to to fix brittle tests. Before you know it, the Hare will start to cause full blown production problems.

Watch out for the hare. He causes problems.

Book Review: Being Geek – The Software Developer’s Career Handbook.

Friday, February 25th, 2011

I’ll admit, I am not much for book reading. I like skimming the Internet and blogs but setting down with a book is not my thing. Maybe it is my Dyslexia, who knows. That is why I was surprised on how fast I read Being Geek by Michael Lopp.

Michael, who often goes by the name Rands, is a engineer manager in Silicon Vally by day and writer/blogger at night. Besides writing books, Rands writes a blog called Rands In Repose where he gives advice about living, working, and dealing with geeks and being a geek. It is well written blog with good content.

Back to Being Geek. The book claims to be the “The Software Developer’s Career Handbook” and it does just that. The content is not earth shattering but it does put things into perspective. Being Geek is written for the target audience of Geeks who tend to view the world in black and white. The content flows from the start of a Geek’s career to the end the current gig along with everything in between.  Chapters are short and to the point, each has a point to be made. While connected and in an order, the chapters can stand on their own. This made the book a joy to read because I didn’t have to go through the fluff to get to the point.

I thought the book was over all very good. There were a few chapters that felt they didn’t apply to me at this moment. These parts where more about being a manager, which I am not (yet anyways). With that said, may of the chapters did apply. The first section of the book walks through the finding a job and interviewing process. This was probably the biggest eye opener to me. I did not realise all the minuscule detail that interviewer is looking for, that is if they are any good. Rands goes into detail on what to expect and what the goals of the interviewee should be. For example, the phone screen, I learned, is all about communication. Can communication flow between the interviewer and interviewee. Rands also discusses the type of questions the interviewer is probably going to ask, why they ask it, and high level suggestions for answers.

In the end the book gave a lot of good information in a no nonsense cut the crap kind of way. I give credit to the Book and Rands for giving me some confidence and motivation in my career.

Android Development: The Fail

Monday, February 7th, 2011

So back in October I started the process of learning to do development for to android. Sadly, I am here today to admit that went poorly. This is my reflection on why it went badly and how I expect to better next time.

Problem 1: Me. Yup, that is right. The first problem I ran into was me. I have a lot of ideas for applications for Android and in general. The problem isn’t that I jumped right into development, it was when I jumped I landed in a spot that was over my head and that made me instantly frustrated. With in days of installing the tools and SDK my drive had died. I just got over whelmed with all the new that I didn’t take the time to learn.

Solution: While I hate doing the typical “Hello World” type apps, it is a necessary evil. It is the steps needed to ramp up understanding of the environmental. What I was trying to do was not hard but because I didn’t know the basics of Android development, it was difficult to find help. The process isn’t hard and takes a bit of time but ramping up is needed to keep from being overwhelmed.

Problem 2: Holy cow, embedded application development is slow. Let me be clear, development isn’t slow but getting you application to run via emulator or on a device is painful. When it takes a few minute for my application to run, this just kills the fun and drive to continue. Especially when learning. When I was waiting, it was so easy to get side tracked.

Solution: I hear the sdk and emulators are getting better and faster. I am also in needed of a new PC which is pushing 5 years old or at least an upgrade or 2. Other than that, I am not sure what else I can do.

So the biggest problem was me. Once I can get through them, it should be pretty easy to continue. I plan on starting this again as I think there is some positive applications I could contribute to the community. However this is on hold for the moment. Need to get caught up on technologies related to my job, mainly ASP.NET MVC

Android Development: The Install

Wednesday, October 6th, 2010

I recently picked up my first smart phone. After years of wanting to move up to a smartphone but holding off because of price, I finally caved and picked up a HTC Desire. It is running Android 2.1 out of the box. It is a pretty slick phone. So far I have enjoyed my prechuse.

One of the reason I decided to pull the trigger was the idea of creating application for the phone. By day I am a .NET developer. Mainly C#. I was sort of excited to learn a new development environment and langue because I have been in .NET land for so long. I figure it is time to branch out. Yeah java is not much different than .NET but you have to start somewhere. 🙂

So I had some time to get the Eclipse IDE setup and ready to go to start my journey. I went to http://developer.android.com and followed the instructions on getting started. I am starting from scratch. The machine (win7) I am working on didn’t even have the Java runtime installed yet. Since I am a novice when it comes to Java and Eclipse, I followed the installation steps for the Android SDK. They seemed straight forward.

First step: Get eclipse. Sounds easy enough. Read through the section for ecplise which stated…

A Java or RCP version of Eclipse is recommended. For Eclipse 3.5, the “Eclipse Classic” version is recommended.

What does that even mean? So I want to the Eclipse site and downloaded the Java version of Eclipse 3.6 and continued to the section to install the Android Develipment Tools (ADT).  This is where things get more confusing because I was greated with…

Caution: There are known issues with the ADT plugin running with Eclipse 3.6. Please stay on 3.5 until further notice.

Grrrrrr…. But I just downloaded 3.6.1!! To limit the number of issues I run into I decide to follow what Google recommends and found a copy of Eclipse 3.5. No big deal. I go to run Eclipse and it promptly fails stating it can not find the JVM. At this point I was confused because I had thought that I installed Java at some point in the past. Yeah, I was wrong. Whoops. Over to the Oracle to get the JRE/JDK.

I am running win7 x64 and did what anyone running x64bit OS would do. I download the x64 windows binary. Install Java. Run eclipse. Eclipse fails again. Still stating that it could not find the JVM. Ugh. The message box suggest to add the path to the JVM to my system path. A few clicks later and it should be good to go right? Nope, now Eclipse crashs but with a log/debug message.

At this point I was about ready to give up. That is until it dawned on me. “Hey stupid! You probably can’t run 32bit Eclipse with 64bit JRE!” An uninstall and reinstall of the JRE and eclipse is running!

From here on out everything seem to work correctly. Totally elapsed time: ~2 hours. No really 2 hours.

My enthusiasm has lessened alot because of the frustrating install. I mean I have not even started to write a hello world Android app yet. I am planning on sharing my experience as I go and comparing it to how I view the .NET start up experience.

More Complexity! I need more Complexity!

Monday, April 13th, 2009

Neal Ford has a series of post about SOA and how it is being sold to developers. While the post had some pretty good points on the topic, He talks about something he calls the Rubick’s Cubicle anti-pattern. The pattern as stated from the post is:

If the presented problem isn’t complex enough, developers will figure out ways DigiYes? to make it complicated and therefore challenging.

Shortly after reading about ????? the anti-pattern, I had a meeting to attend. It becomes apparent pretty quickly how true the anti-pattern is as I sat in listened in this meeting. This got me to thinking about problems and solutions of everyday life.

The first thing that comes to mind is how we communicate. Back when cavemen walked the Earth communication cheap jerseys was nothing more Ammonia then pointing and grunts. Fast forward to Today Hello where we have E-mail, Twitter, Cell Phones, signal fires, and video conferencing. One could go on for a pretty long time one just the number of different ways we interact with others these days. Anther fine example of complexity with communication is that forms of interaction that were not suppose to be instant are being treated as such. I can not count the number of times I would get an e-mail from someone and an заставить hour later get your a phone call or another is email asking if I had received the first one! I know make it a general rule to ignore my email when I am being productive.

This quote has actually got me thinking about my problem solving abilities. I wholesale mlb jerseys have noticed that I am guilty of taking the more complex rout because it would be more entertaining and/or challenging. It actually has me concerned. I don’t want to write complex code because I can! I have added a step to my problem solving process because of this quote and realizations. When trying to solve a problem, I make sure to stop and ask myself if there is a less complex way of solving the problem. Sure there may be an easy way to solve the problem, however easy does not mean simple. We have all seen a “fix” cheap nba jerseys that was one line of code but was confusing as hell.

Stack Overflow is programmer crack!

Sunday, March 29th, 2009

Stack Overflow is a Q&A wiki site for programmers. People can post questions, answer questions, and search for questions. Question and Answers get voted up or down based on what the community thinks of them. As people ask and answer questions, karma is gained. As karma is gained by a user they can do more on the site like editing, voting Cuarzo up, and voting down.

The site is the fairly popular among developers. The 100,000 question was recently asked with many added everyday. The community looks to 調布飛行場での開発拠点の確保 be pretty strong and oddly mature. I say oddly mature because it is the Internet after all.

Stack Overflow is programmer crack. I find myself setting at the questions wholesale jerseys page hitting refresh over and over again waiting for new questions to be asked. Its fun to see what roadblocks Is other programmers are Warrior stack at. It is also a good feeling to get voted up on question and/or answers on the site. The ultimate joy is when your question is Hello accepted as the answer. It some how validates you as a programmer when one of your questions get marked as an  answer or is up voted. Stack Overflow addicting nature is what keeps me coming back day after day to see what has been posted.

Stack Overflow is currently working out great for many people. Questions (depending on wholesale nba jerseys complexity) will have answers or suggestions shortly after posting because the community seems eager to help. And yes the answers are cheap mlb jerseys normally helpful in someway, shape, or form. In the end Stack Overflow comes highly recommended from this developer.

Tony.