Building a better web. Chief Technology Officer at YSFlight Headquarters. Undergrad at Illinois Tech. Aviation nerd. Hacking in progress.
Don't wanna be here? Send us removal request.
Text
Now on Svbtle!
As Svbtle recently announced it is open for everyone I will be posting all future updates on there. This Tumblr blog remains for archival purposes and can be accessed via erictendian.tumblr.com.
NEW POST: "Bitcoins Can Now Legally Marry"
1 note
·
View note
Text
Lessons Learned from Building NCP Registration
Background: NCP Registration was the web application that students at Northside College Preparatory High School (NCPHS) used to register for semesterly and weekly courses. It contained "colloquium" courses as well as "X/Y" courses. Both of these occur on Wednesdays at Northside, on regular 5-day weeks (M-F). The application can still be accessed here. I was hired by the school (as a student worker) to build this application. The following are my thoughts only, and do not reflect the views of NCPHS, Chicago Public Schools, or any other entity.
It has been over a year since my course registration application, informally known as NCP Registration, was launched to the students of Northside College Prep. Development started in early July 2012, and continued though the launch in September 2012, feature additions ceasing sometime in Spring 2013. Upon graduation in June 2013, I was no longer responsible for the application.
Features
The application performed the following:
Course lists of colloquiums and X/Y blocks
Course registration for colloquiums and X/Y blocks
Custom permissions for specific courses
Timed opening/closing of registration
Attendance-taking via alphabetized roster and student ID
Master list exports (course rosters, attendance)
It should have also performed automatic course assignment for those who did not sign up for a course, but that feature did not reach production-ready status.
Technology Stack
Powering the application was this technology stack:
Drupal 6.x Modules included:
Content Construction Kit
Chaos Tool Suite
ImageCache
LDAP Integration
Organic Groups
Panels
Misc. other administration and single-function modules
PHP 5.x
MySQL 5.x
Windows Server 2008 R2
What Went Wrong
In building this application, I ran into many challenges, some of which were easy to remediate and some were more difficult. In this first part, I am going to talk about some of the things that went wrong.
Extremely long load times
As registration for courses started at 7AM, students were eager to select classes. Over a hundred site visitors at one time meant for very poor performance without the appropriate hardware and caching mechanisms in place. With the database buckling under the load on the first day, there needed to be fixes, and fast. Just like HealthCare.gov...
Luckily, after some quick fixes, this issue was able to be resolved somewhat within the first two days.
Unreliable registration statuses
Due to the server issues, some requests were timing out before necessary actions could be completed. This caused a chain-reaction which led to some users thinking they were registered for a course when they were not.
Changing the frontend code solved this problem, but it did not revert the misconceptions of many users.
Lack of communication
Any development project suffers shortcomings when information is not properly communicated to players involved. From not fully understanding the assignment when it was initially given, to not communicating the issues to users in time, to administrators not fully understanding how to use the application, the effectiveness was diminished.
These issues were slowly resolved over the months the application was developed, and the amount of communication had greatly increased by the time second semester rolled around.
Usability & design flaws
Design is very important in any application, and the usability/user experience determines whether users will make complaints. In this case, the design appeared fairly solid to students, but for teachers and administrators, the excessive links and options proved cumbersome. This was one of the few issues I could not resolve completely, so instead a manual was created and new shortcuts were made.
Overly complex implementation method
While a modular system such as Drupal may have been good-intentioned in its use, many of the problems faced could have been avoided if a different approach was taken. This approach would focus more on the problem at hand, and not take into account the what-if's as much. This complex implementation was of creating a system that handled attendance and registration together, patched together through Drupal modules not truly designed for their new use.
Lack of solid testing
No application can be considered successful, much less working, if it does not pass all the tests of a production environment. One of the issues that I faced as a young developer was not knowing how or having the time to implement good testing protocol into the application, which would detect edge cases as well as my manual tests. One cannot have innocence forever.
What I Learned
Through those failures I have mentioned, I was able to get a clear understanding of how to handle projects like this in the future.
Shiny black boxes aren't always better
Having used Drupal for two other projects in the past and seeing how easy it was to create new types of content, I viewed this project from a content management system context. However, when building the application on top of Drupal, I ran into problems that would have been avoided if I had coded everything myself. For example, Drupal's core contained a lot of "fluff" that wasn't necessary for building the site, and so this "fluff" slowed the rest of the site down. If I were building this again, I would weigh the trade-offs of using Drupal versus another framework versus a custom-built solution more seriously.
Less complexity, less failure
When building web applications for clients in government and education (where large bureaucracies are involved) there are often changing requirements. However, the squabbles that result in changed requirements are often over minor details rather than large conceptual changes. Therefore, if the code you build is simple, where simple is synonymous with highly abstracted, then it becomes easier to adapt to change. In this case, I did not know the details of what I was building until a month into the project. However, if I had built the system to revolve around signing up more generally for a course rather than a colloquium or an X/Y block, then when changes needed to be made (e.g. to account for special periods during finals) the system could adapt better. As famous computer scientist Edsger Dijkstra once said, "Simplicity is prerequisite for reliability."
Test before you ship
One of the biggest failures of IT project rollouts is when the software is not tested before it is released to the public. We have seen this in the last few months as both HealthCare.gov (the federal healthcare exchange) as well as Ventra (the CTA's new payment system) have had massive problems due to a lack of testing. This was also the case in my project, for load testing was not performed adequately and some code that was pushed live did not run as expected. To solve this problem, software engineers use tools like unit tests and development servers to avoid using real users as guinea pigs for their hole-ridden code. I now use a development server for my projects and will be learning unit testing soon.
Avoid bikeshedding
As developers, we often feel the need to argue over what programming language or framework to use, and other trivial components. We may not agree with the way the business wants their product to be built, but not always do we have the privilege to make the high-level decisions. Therefore, while it may feel pleasing to think about a problem from a computer scientist standpoint, it can also waste time from accomplishing the real task at hand. My philosophy is now that you should get the task done the first time using what you know best, and then focus on optimization/picking the best tool for the task, regardless of experience with it.
Do not alienate your users
Us tech people get it. Problems do happen, projects get postponed, bugs occur. As much as dealing with customers/users may be unpleasant, it is our job to communicate any issues to them. It is always better for someone to know that their house is burning than to try to put out the fire before they wake up. The more they know, the more understanding they can be (this is usually the case, but not always). Bottom line: more communication equals more success.
Ask for help
On the point of communication, it is very important to know when you're no longer able to complete the task on your own. Even more importantly is the ability to summon the courage to ask someone for assistance. One of the biggest lessons I've learned from this is that being a sole developer does not go very well. As I've heard countless times before, humans naturally work better in groups, and for good reason. In software development, the ability to distribute the work and check on each other is key. Having a partner in a project can be very beneficial. I have learned that I need to first know when it becomes too much, and also know how others' can help me when I ask them. Asking for help may not be enough - show someone how they can help. And if you are ever asked for help, pay it forward.
Presently
Today, I am working on new projects which make use of the experience I have gained from this project. Later today, I will be launching the new version of YSFlight Headquarters, 4.0, which myself and a few others have been working on for the last few months. The registration site is no longer in use, but the replacement has had some recent development. You can view progress on it here. While I am still not certain if I want to become a web developer or something else, I know that my love for computing will be around forever. This project, and the aftermath of it, has only made my passion stronger.
If you enjoyed this post, I would be honored if you would follow me on Twitter.
2 notes
·
View notes
Text
A "chat" in the 21st century: instant messaging & more
Beep. Ping. Clang. Those are the sounds of communication in my life. I have typed thousands of lines into an instant messaging (IM) client, without a single sound exiting my mouth. Unlike the teenagers who decades ago heard the sound of a nearby postman, our current world is full of these percussion sounds, signifying we have just received another message or other notification.
Just like those in long-distance relationships fifty years ago checked their mailboxes eagerly for letters from their lover, we check our Facebook notifications and inboxes with a similar eagerness. Moving my mouse to the right edge of the screen, a "buddy list" appears. Shown are a list of "friends" currently online, automatically sorted by the number of previous interactions. I have checked this list a hundred times each day, some times on accident, but many on purpose. Whoops, I just did it again while writing this. Describing this list of "friends" with quotation marks was no accident - admittedly, many of the people on the list I have no motivation to converse with. However, some of those I can converse with for hours every day. With this stark contrast, a question arises: why do we make use of such an odd list, making split-second judgments on who we value and who we don't? Why is there such an obsession over who is "online" and who is not? For all the people on the list are all equally human, and are equally capable of conversing (albeit some not instantly).
It is quite certain that the computers and the Internet has changed the way we communicate (perhaps forever). As I was born in a time when the Internet was gaining popularity (1995 to be precise), I have never experienced a world without this medium available to me. While digital conversations may seem quite similar to those in real life, they have a few key differences:
Conversations online have much less greeting/introduction involved than physical ones. Starting out with a question or comment is less rude than one may perceive from speaking to someone on the street. It is acceptable to start out with "we should go to the movies tomorrow" when texting/instant messaging while a physical conversation would begin with "Hi [name]! What's up?"
Tone, body language, most emotion, and other nonverbal cues are removed. When sending a message such as "oh wow that sounds wonderful" it could either imply happiness or sarcasm/dismay, depending on the context. In some situations it becomes very hard to discern which is which. This lack of nonverbal context can prove disastrous.
Use of texting abbreviations and slang. Unlike a physical conversation where these characteristics are not present, an online conversation is filled with them. However, a change from something such as "do u want to go to the movies lol" to "We need to talk about something." signifies a vast change in mood.
Conversations may not have clear endings. In a physical conversation, each participant may feel the need to keep it going in order to avoid wasting the other participant's time (as they may need to leave elsewhere). When instant messaging and sending links to one another, a long silence may not mean the conversation is over, but rather it has just paused while the participant(s) carry out another task. If the participant has no impending tasks but also no topics of conversation, they may wait for the other participant to write something. However, if this does not occur, the conversation slowly dies out.
All of these differences I have observed first-hand, and have struggled to deal with. In today's age of texting and instant messaging, online commenting and the like, the social norms have changed. Yet we still use the schema of a physical conversation when engaging in a virtual one. Are we missing out on meaningful interactions? Or do we need to better adapt to an age where we do not communicate with elaborate points but rather short, terse statements?
As 2013 comes to a close, I feel as though I would become a more social[-ly skilled] individual if I was born in an age where the only modes of instant communication were by sitting across from a person. However, as this is not the case, I make a conscious choice to seclude myself in a room filled with screens, and becoming aware of other humans though only mere pixels. While this may seem to be a lazy person's choice, it is also a practical one since all my peers have done the same.
As a society, we are still learning to use tools such as social media, texting, instant messaging, and others. Not just in the legal sense (the law is stumbling forward, e.g. NSA) but moreover in the social sense. How do we know the tone is correct in the latest Snapchat we sent? Did that Facebook like on our sad status update mean the person is trying to be comforting and supportive, or sadistic?
I do not have the answers to these questions, and neither does the creators of these mediums. But hopefully as we continue tapping away on our phones we can establish a well-defined etiquette for instant messaging and other new mediums of communication.
If you would like to discuss this further, please follow me on Twitter and reply to the tweet linking to this post. You can also find me on Facebook and instant message me there, or just send a good old-fashioned email (to eric[at]tendian.io). I'd love to hear your thoughts.
0 notes
Text
College: Semester One
First semester ended as quickly as it started. From a sweltering August to frigid December, the college experience has been mostly enjoyable.
Some highlights of first semester:
Getting awarded the Fifty for the Future award by the Illinois Technology Foundation, and becoming the IIT representative for the Student Technology Club
Becoming webmaster for the Illinois Inst. of Tech. student branch of the Institute of Electrical and Electronics Engineers
Launching Weekend Hackers Chicago, a meetup group for students interested in tech careers
Some interesting employment that I cannot disclose
As far as academics goes, I ended first semester with a 3.4 GPA, which is not bad, but obviously it is <4.0 so it could be improved. Next semester I am taking the following classes:
BUS 221 - Analytics for Informed Decision Making
EG 225 - Engineering Graphics for Non-Engineers
ITM 100 - Introduction to IT as a Profession
ITMD 411 - Intermediate Software Development
ITMD 421 - Data Modeling and Applications
Once the semester starts I will have a better idea of what they are. However, over break I am keeping a full schedule. From further developing YSFlight Headquarters and rebuilding YSUpload to building new websites (IEEE@IIT and [classified]) as well as creating a quadcopter, days are rich with activity.
You can check up on YSFHQ/YSU by visiting the links above. Check out the quadcopter progress by visiting our engineering notebook here. Otherwise, I would be honored if you would follow me on Twitter. I hope I can earn your follow.
Happy Holidays everyone! Look for another post next week.
0 notes
Text
Bringing Computer Science to Chicago Public Schools
As a recent Chicago Public Schools (CPS) graduate, I was thrilled to hear the news that as a result of a partnership between Code.org and CPS, a new K-12 Computer Science program is being brought to CPS elementary and high schools.
About the program:
The K-12 program will expand student access to computer science literacy over the next five years. The program will include:
In the next three years, every high school will offer a foundational “Exploring Computer Science” course.
In the next five years, at least half of all high schools will also offer an AP Computer Science course.
Chicago will also be the first US urban district to offer a K-8 computer science pathway, reaching one in four elementary schools in the next five years.
Within five years, CPS will allow computer science to count as a graduation requirement (e.g. possibly as a math, science, or foreign language credit). Only thirteen other states have elevated computer science to a core subject instead of an elective.
Code.org will be providing the curriculum and professional development for teachers who will teach the new classes, at no cost to taxpayers. This is especially notable because one argument against CS education is that it will cost too much versus traditional science/math education.
I've written about computer science education before (see here and here) and I am proud to say that my alma mater has been leading the charge to bring computer science to the rest of public schools in Chicago. A big reason I continue to study in the field and promote it is because of the inspiration that my teachers have given me. I hope to one day give back by becoming one part-time (or maybe even full-time) so that I can inspire younger versions of me to pursue their dreams.
Until then, I am working to keep other students interested in computer science and careers using it by coordinating my meetup group Weekend Hackers Chicago. So far, we've had one successful meeting and more should be coming soon. 20 people have signed up, and I hope to expand that number as more high schools and universities find out about what we're doing. At our next meeting we will be working on a website to popularize the group.
You can read more about the initiative in the press release: Mayor Emanuel And CPS CEO Barbara Byrd-Bennett Announce Comprehensive K-12 Computer Science Program For CPS Students
P.S. - As the first semester of college has now ended, I will be making an update post soon to detail what the first semester has been like, and what is coming in second semester.
0 notes
Text
Keep Saturdays Sacred
To read the preface, click here.
For many months my motivation has wavered, unsure of whether to pursue fruitless goals. I had lost the creative touch that my childhood was filled with. Today I am more determined and motivated than ever. I am proud to announce the launch of a new student group, a club for students interested in tech. I firmly believe that this will lead to many great friendships, experiences, and possibly businesses.
I have not thought of a name for this yet, so I will refer to it as Student Tech Explorers. We keep our Saturdays sacred.
The Plan
We go to a central meeting place (cafe, library, etc).
We work on whatever interests us, whether it’s designing a new website, coding a cool mobile app, blogging, or just learning a new programming language. You can work alone or find someone to work with you.
We get to know and learn from each other. Discuss methodology. Tell nerdy jokes. Meet someone else that likes something as much as you do.
We have a good time and support each other when times get tough. Nobody is an outsider.
This might be the group for you if you want to meet socially conscious nerds to work on and talk about interesting things. This group will be a combination of a support group, coworking meetup, entrepreneurship club, networking group, retreat group, and social circle. In the end, we’re just a bunch of friends curious about technology that get together and work on awesome stuff, learning from each other in the process.
This group is open to students only, but you don’t have to be a student in the traditional sense. We accept high school students all the way to grad students and those who are lifelong learners. As long as you are willing to learn from other members in a respectful manner, we’re glad to have you.
Although education and outreach are both important to us, the primary goal is to create a social group for students in and around tech, from all backgrounds, where they feel comfortable and welcome. The group should be a safe place to try (and fail) with new ideas or experiences.
There aren't regularly organized talks, workshops, or otherwise. We don’t have tickets, we don’t have namebadges. We’re striving to be as disorganized and informal as possible. We will talk about tech a lot but we’d also like to not talk about tech too. At the end of the day we’re just wanting not to be alone when we find ourselves exploring the possibilities of technology.
Impostors Welcome
If you’re from a background which isn't well-represented in most geeky meetups, come along – we want to make a difference.
If you’re from a background which is well-represented in most geeky meetups, come along – we want your help making a difference.
If you’re worried about not being experienced enough, come to learn.
If you’re worried about being too experienced, come to teach.
If you think you’re an impostor, come.
If your field of study isn't code, come.
This isn't a group of experts, just explorers.
We are interested in the technical and social problems.
This is a coworking and support group. No-one needs to know what they are doing all the time.
The Rules
A code of conduct applies wherever we gather to work and talk. This is true both in person and online.
We want to be inclusive; do not engage in homophobic, racist, transphobic, ableist, sexist, or otherwise exclusionary behavior. Don’t make exclusionary jokes. Don’t even make them "ironically".
Don’t harass people. Unconsented physical contact or sexual attention is harassment. Dressing or acting in a certain way is not consent.
Aggression and elitism are unwelcome here — coworking is not a competition.
Although we’re mostly a group of young students, we should act like mature adults. Clearly immature behavior will not be tolerated.
We’d rather you ask about gender than assume, and if you get it wrong, apologize, and use what they prefer.
We think feminism is a good thing. Discussion of how to make tech more inclusive is welcome. Claims that this "has gone too far" aren't.
It might be a good idea to read about being a good ally or some specific resources for various issues if you’re worried about offending people or acting immature.
Join Us
If this group is something you would be interested in joining, fill out this Google form and we’ll add you to our mailing list. When we have our first meetup, you will be notified via email. This is still in the planning stages, so feel free to give suggestions on this in the comments.
As of now this is located in the City of Chicago, but others are welcome to start their own chapter wherever they may reside.
Help Wanted
If you’re a business leader, educator, parent, investor, or any other adult who supports this idea, then we would be thrilled if you could provide guidance, marketing, financial support, or a venue for us. We are also looking for individuals to volunteer for certain tasks as the need arises. Add that you’re interested in helping out when signing up on our mailing list and we’ll get back to you.
Thanks to everyone that has already pledged support, and to those who will do so in the future. I’m excited to see where this will go.
This idea was inspired by a blog post of the same name by Steve Klabnik. The group proposal was based off of a similar group, Computer Anonymous. Other groups that have provided guidance in proposing this includes Indy Startup Lab, the Hacker School, and Jelly Chicago.
You can email me at eric at tendian.io or follow me on Twitter here.
1 note
·
View note
Text
Keep Saturdays Sacred: Preface
As of the time I am writing this post, I am 18.28 years old. I have been using a computer for at least ten years now. I have been programming for at least six years. There are obviously many factors that have contributed to my knowledge of technology, but the one that has stuck with me the most is my desire to experiment with something new. It can be summed up in a sentence: Never stop exploring.
Ever since I can remember, I have been exploring the world around me, conducting experiments to try and understand it. These experiments are not the ones you see in scientific journals or at school. My experiments were for fun, for curiosity’s sake. One day I would take apart a radio, another I would tape up our carpet to create roads for my toy cars (some marks are still visible). I could not focus on one project, I needed many of them. Immediately after I had become satisfied with my work, I abandoned what I was doing and started something else.
Unfortunately, now that I am older, I see less and less of that in myself, as well as those around me. Faced with burnout last year, I told myself I would stick to only 1 or 2 side projects, and finish those before I started others. My curiosity started to dwindle, and I spent my time reading comments on reddit, or watching YouTube videos. Motivation was running low. I watched as those around me spent their weekends on Netflix, or going out to parties with friends.
I needed a change.
What I was missing was support from other like-minded people, curious and ambitious. So one day in the spring, I decided that I would go find others like me. An hour before the event was supposed to start, I registered on Meetup.com and joined a small WordPress meetup that was having it’s first meeting. And so I attended, being the youngest (by far) out of the other four there. It being my first such event, I was awkward and afraid. I didn't feel like I fit in.
Later that spring, and into summer I went to a few more meetup events (not with the same original group), but at each one I was the youngest there, and it was not unlikely that I would feel patronized at least once. I had become concerned that there weren't like-minded people around me at all, that all the “cool kids” were hacking away in San Francisco.
Over the summer, I worked on YSFlight Headquarters with a few other young, tech-savvy individuals. We were building something I was truly proud of, and still are to this day. The work I was doing became my escape from the corporate grind at CPS during the day. Since joining the YSFlight community back in 2006, I became close with my fellow virtual pilots, even though I had never met them face-to-face. They had a love for aviation, but also enjoyed technology (and some even made addons). I realized that I wanted a community of friends just like that.
As I started school at IIT, I had been thinking of how I could make my experience as great as high school has been. I wanted to find friends who shared the same interests as me, but also had a wide range of opinions on subjects I had never heard of. Then it hit me. I started to bring together my desires with what I could learn from those around me, coming up with a network that would fill the void I had been in for so long. I felt my curiosity and motivation coming back. I was like a young Columbus again.
Today, I am announcing my idea. A plan to keep exploration going, to fuel new experiments and experiences. This is going to be exciting. I hope you will join me.
I will be announcing the idea in the second part of this post. Stay tuned.
2 notes
·
View notes
Text
What to write next?
Now that I've finished with those two posts I had planned, I'm eager to hear your thoughts on what I should write about next. Feel free to reply via Tumblr or leave your comments below. You can also shoot me an email at [email protected] if you don't want others to see your response.
0 notes
Text
College: The First Month @ IIT
Every book you've ever read is just a different combination of 26 letters. Every blog post you've ever read, every gif frame, every video frame, every single thing you've done on your computer is just a combination of 2 digits. 1 and 0. How can a machine based on on's and off's change the world? That is why I study computer science.
It is with this sentiment that I start my studies at the Illinois Institute of Technology (majoring in Information Technology and Management, a.k.a. CS with a business focus). Classes began just over a month ago, and have been going relatively smoothly.
My Classes
BUS210, Financial and Managerial Accounting
HUM106, Life Stories
ITM301, Intro to Contemporary Operating Systems and Hardware I
ITM312, Intro to Systems Software Programming
PSYC301, Industrial Psychology
Least workload? PSYC301. Most fun? HUM106.
Getting Started
The beginning of my days at IIT started a week before the start of classes, with orientation taking place Monday and Tuesday. This was much different from high school orientation, as we sat through multiple presentations about campus life, opportunities available, and academics. The first day was padded by team-building and social events, so you can get to know your orientation group better. The second day of orientation consisted of meeting with my academic advisor in order to register for classes. Thanks to the AP credit I received while in high school, I have already completed my required social science and math classes. Afterwards, I was able to pick up my ID and go on a tour of the campus. That concluded orientation, and I was able to return to work.
Later that week, there was a variety of events I attended, including a citywide scavenger hunt and a meetup with my peer mentor group. That weekend, I attended the Chicago Air and Water Show, an annual favorite. While there was a noticable lack of military prescence, I still had a good time.
Classes Begin
Hearing about college from older friends, the Internet, and media, I expected large lecture halls, less strict rules, and a wide variety of students. My first class was BUS210, which is located on the 6th floor of IIT Tower. Unlike my expectations, it only had about 20 students, but was quite laid-back. The professor started to lecture exactly as class was scheduled to start, and there was much less teacher-student interaction than I had experienced in high school. This was the same in PSYC301, except in PSYC301 there were 50 students instead of 20.
My ITM classes were more hands-on, albeit still a lot of lecture. HUM106, one of the humanities courses for all first-year students, had the most teacher-student interaction; discussion and writing are the primary focus of the class. In ITM312, we are learning the basics of programming in C++. As I have a great deal of prior [object-oriented] programming experience, I often help out students who have difficulty getting started, and take lecture notes for everyone; I'm sort of an unofficial TA.
Organizations and Activities
College life would not be complete without all the various student organizations and things to do around campus. Being a commuter student, it is more difficult to take advantage of all the opportunities, but there are still many fun events going on during my time on campus. I am currently involved in, or want to be involved in...
ITMO, Information Technology Management Organization
ACM, Association of Computing Machinery (student chapter)
IEEE, Institute of Electrical and Electronics Engineers (student chapter)
ITR, Illinois Tech Robotics
AIAA, American Institute of Aeronautics and Astronautics (student chapter)
All of the organizations mentioned have some programming component, and all of them are engineering-focused. I'm excited to share my skills and learn from peers during various project meetings for each of these groups. These are also great for networking and just making new friends.
Difficulties
No experience is perfect, as in this case. Adjusting to a new environment is always hard, having to adapt to the community and learn the tricks to success. Given more freedom and time, it has been hard to manage the extra time and fill it with meaningful activities. However, I have made progress by keeping up with my todo list and focusing on the work at hand. Yet another difficulty has been ensuring all homework gets done - as many of my professors do not check it, it may seem like something to forget about. However, the bulk of the course grade comes from exams, so it becomes vital to complete homework if a great exam score is to be achieved. Furthermore, combining student organization meetings with class work can be difficult to manage, as though it seems there is a large amount of free time, much of that time will be spent on homework or at a job.
Getting aquanited to new people has also been difficult. Being a commuter student, much of the time that would be spent in the dorms meeting new people or hanging out with roommates is spent at home. However, it was the most cost-effective option. During orientation week is when I made many friends - there are quite a number of international students at IIT! Approx. 1/4 of the student body is international, and the male/female ratio is 63%/37%. Luckily, there are events at IIT every week, so being able to go to a few of those has made my experience more fun/social.
Future Plans
Looking forward, I'm thinking about starting my own student organization. Something I discovered recently is a group called NUX Studio at Northwestern University, which is a team of undergraduate student developers who create mobile and web applications for the Northwestern community. Having created many web apps for students back at Northside College Prep, I'm excited to see if I can make this team a reality at IIT. Perhaps it can be a special intrest group within IIT's ACM chapter, as that is the primary computer science organization at IIT. We'll see...
I'm excited to see what comes next. Hopefully this post can help other students who are applying to college right now (especially those considering IIT). If you'd like to talk more about what life at IIT is like, I would be happy to go more in-depth; email me at [email protected] and we'll chat.
For more posts, tech or otherwise, you can follow me on Twitter @EricTendian.
6 notes
·
View notes
Text
Three things I learned as an intern at Chicago Public Schools
This summer, in addition to working on revamping YSFlight Headquarters and taking Startup Engineering via Coursera, I took on the challenge of interning at the Information & Technology Services (ITS) department within Chicago Public Schools (CPS). Having taken an Oracle Database Design class and participated in CPS's Career and Technical Education program, I was offered a chance to work with the CPS Oracle team. As I have always wondered what technology powered the third-largest school district in the country, I jumped on the opportunity.
The first day of the internship was a warm and sunny July day. Sitting in the air-conditioned CPS Central Office in downtown Chicago, the team of interns listened to various presentations on the organizational structure of CPS, the roles of different teams in ITS, and eventually got a tour of the building. At the end of the day, we were given team assignments - these would be the group of people we would work with throughout the 6 weeks of the internship. By sheer coincidence, I was assigned to the Web Services team at ITS, which manages the CPS.edu website. The Web Services team also coordinates with various other departments to deliver effective websites and web applications. Having developed many websites myself (my first was when I was 11 or 12) the team was a good fit.
The second day was my first day on the Web Services team, so that also involved a bit of time to get acquainted with members of the team. This brings me to the first thing I learned...
Effective communication is just as important, if not more important, than writing effective code. Often, the image someone has of a programmer is a person that sits in a dark room alone and types away on their screen. They only communicate with others through instant messaging or email, and almost never see the light of day. However, this perception is completely false. While some programmers may choose to seclude themselves away from human contact, software engineering is a field that demands strong communication skills. The best engineers work in teams, and they need to be able to talk about their progress so that everyone on the team can understand. CPS was a good example of this in practice.
On that second day of the internship, I was given my assignment by one of the web producers on the team. The way the assignment was explained was very business-like, talking about existing problems and "objectives" that needed to be accomplish, as well as our mission of addressing the "customer's" needs. My assignment was to find a way to direct schools toward design best-practices for their website, so horrendous site designs could be avoided. However, also allow schools to have a few degrees of freedom to customize their design as they wish.
At first, I was unsure of how to go about accomplishing the task, for it seemed vague and open-ended. Previous projects I had worked on had very defined objectives, and solved a specific problem. This was one of the first times I was able to exercise my own judgment in how to go about solving the problem. My first instinct was to start brainstorming and experiment with different ideas to see how they would turn out. I was able to hack the HTML and CSS that the tempting engine in the CMS used, and with the help of some JavaScript, create a plugin that would add a background image to the CSS (the background image being defined on a configuration page).
At the next team meeting, I showed off my work. The team was impressed by the “hack” but noted that it still didn’t solve the problem, which I acknowledged. We then took a moment to discuss what we could do to address the problem. The other intern on the Web Services team, Sufyan, came up with the great idea of creating a template that schools can use to help build well-designed websites. The template would include all the design basics as well as some color choices, so the risk of any horrid color combinations was lowered dramatically. With that idea solidified, we got to work.
While in the process of building this new template, I learned something else, particularly about the companies that I want to work at…
The enemy of innovation, especially in software development, is bureaucracy. While I personally did not feel the effects of being at a monolithic organization as much as others, I did notice it in some of the projects my coworkers (as well as other interns) were working on. As many Chicago residents may know, Chicago Public Schools is a troubled organization. It has faced years of underperformance, huge budget shortfalls, and general neglect. A byproduct of this (or perhaps a cause) is the slow-turning gears of bureaucracy and long delays before a project can be carried out.
My exposure to this comes from another project I was working on, a content audit of CPS.edu. With three others, we had to go through approximately 3,000 URL’s, many of them webpages or PDF documents, and decide if they should be archived or not. While performing this arduous task, I was able to get a look at the vast scope of the organization. It occurred to me that many great ideas can take years to implement (if the idea is lucky enough to go that far) because of so many approvals that are needed by various department heads along the way. Furthermore, at one of the team meetings, a coworker noted that often times they were the ones waiting for a response from the customer (another department at CPS) versus being able to quickly execute and deliver the best solution.
As I have learned, your ability to communicate with clients is the difference between a brilliant success and an awful failure. This brings me to the final thing I have learned while at CPS…
Document your product for the “lowest-common-denominator” user. No offense to my users, but some of them can be absolutely clueless when it comes to using software. Additionally, some users may not be native English speakers (or English speakers at all) so it’s important that developers also document their product for a wide audience (if they intend to reach the largest market). Being able to write great software is only half of the story – if nobody knows how to use the wonderful features of the software, then is it really great? Like in my first point, effective communication is very important to convey ideas, thoughts, and directions.
Once I had the template built and tested, it was time to create documentation for it. We (Sufyan and I) went about documenting the process to use it. I created a PDF manual with a step-by-step guide, and he created a series of video tutorials for more complex steps in the manual. I discovered that there is a fine line between simplicity in explanations and the need to cover all the intricacies of the software & OS. Luckily, with all the screencasting software available, it is now possible to record every motion and play it back on command. This makes creating interactive tutorials much easier, and allows for more information.
While creating the initial template manual and videos, it became important to continuously test our own content for clarity. As we could not get some test users for most principals and teachers were either on vacation or preparing for classes, we just “played dumb” and worked through our own tutorial. On the last few days, we wrapped up by doing final tests on our template, documenting code, and proofreading the manual one last time.
To summarize:
Effective communication is key to any software development career
Bureaucracy is the enemy of innovation (and you should avoid it)
Document your product for your most unskilled user
Overall, I found the internship to be a worthwhile experience. While I disliked the working environment (cubicles and dim fluorescent lights do not sit well with me), I gained some new insight into my career path.
What I created while at CPS: http://schoolsite.cps.edu/template.html The template in action: http://sampleschool-cps.weebly.com/
If you would like to talk with me in greater depth about my experiences, shoot me an email at [email protected]. I’d love to chat sometime.
If you enjoyed this post, I’d be humbled if you would follow me on Twitter.
Thanks to Safia Abdalla and Patrick Andrade for reading drafts of this.
2 notes
·
View notes
Link
Absolutely genius. I love this city.
I fell in love with architecture on the Chicago River. It provides a beautiful vantage point to take in all the marvelous skyscrapers. Unlike other cities that cram you on the sidewalk between looming towers.
The Chicago River pushes buildings apart, giving you the opportunity to...
84 notes
·
View notes
Photo
#ysflight screenshots, found on YSFHQ.com
4 notes
·
View notes
Link
The following excerpt is from Jared Erondu's "You’re Young. I’m 18. So what".
Today’s my 18th birthday.
I’ve contemplated keeping my age a secret until I was old enough to buy someone a drink. Or at least until my age didn’t end with “teen.” That way, people would “take me seriously.” But I’ve gotten over it.
It really amazes me how much the world focuses on one’s age and degree(s). Even more so than skill and personality, the most important factors. But today, for my birthday, I’ll try to debunk the silly notion of age > skill. I’ll tell you a little story about me, who helped me grow as a writer, designer and leader, and my advice to young creatives.
Today is my 18th birthday. Just like Jared, I don't think age should be used to judge a person. Far too often I've seen fantastic young designers and engineers that are afraid to go out into the world for fear of being thought of as inexperienced or "too young" to hang out with the adults. I despise the notion that because a young kid may be an especially talented programmer, they can patronized by other adults when at industry conferences or other events. This article describes just how one young designer overcame that.
Now, I think his post does a great job of giving advice. However, I have some of my own. This is the advice I wish I had given myself when I was 14.
Advice for ambitious 19 14 year olds
Build stuff.
If you don't want people to judge you by your age, they will judge you by something else. Be confident about your work and have them judge you by what you create. Nobody will take notice of you if you just browse Facebook or reddit all day, so be creative and create something. It doesn't have to be unique, it doesn't have to be all of your own work. But keep building things, and try to make each new outcome better than the last. Show off your personal projects, put them on Github. The beauty of open-source is that you can have PhD's in Computer Science critiquing your code, and hopefully you can learn from their advice. Staying in a closed-source bubble is not a way to improve. I can't reiterate this enough: Stop fooling around, get out there and build something!
Hang out with smart people
Okay, so now you have something you built. How do you get others to notice your work? Go find them. Get out in the world and make yourself known. Go to meetups, conferences, whatever. Find out what interesting things the other attendees are working on - they might give you an internship or even a full-time job. Take advantage of your resources, because it's far too easy to pass them by. Find other young smart people, because they are far more likely to understand your potential than someone that followed the more traditional career path. Build stuff with them. Use your network to do #1 better.
Stop talking/reading about doing things. Do them.
I've spent far too much time worrying about how my resume looks, what my job title should be, thinking about marketing for my fictitious companies. Forget all that. There's no point in promoting yourself if you have nothing to promote to begin with. At the end of the day, what will matter the most is what you have accomplished. So don't get bogged down with "Hacker News Syndrome" and dream about how great startups must be like. Go found your own startup. If it fails, great - you know what to avoid next time. If it succeeds, even better - just be careful about getting acquired by Yahoo.
In short... Do great things and create products you are proud of. And remember: Age is just a number.
Once again, I've broke my record for number of consecutive days lived. Time to break it again tomorrow.
If you enjoyed this post, you can follow me on Twitter for some more advice.
6 notes
·
View notes
Text
Summer 2013 Plans
Well it's summer again. As of the official beginning of summer, June 21st, I have started work on my summer plans/projects. It's a lot. Those plans are as follows.
Mind and Body
Coursera Startup Engineering Course - In the fall of last year, I started reading a reddit-like news aggregator called Hacker News. Through this, I was able to find out about an online course offered by Coursera called Startup Engineering. It started on the day I graduated, June 17th. By taking the course, I expect to learn a lot more about startups and what software engineering practices are used to build them. Of course, a startup also has a business side, so that should be interesting to learn as well.
Blogging - As mentioned in my last post, I hope to do some more writing on this blog in the future, such as updating my progress on all these endeavors.
Swimming - Since I can't stay on the computer forever, I need to do some exercise as well. I plan on doing a bit of swimming every day after work.
Employment and Networking
Oracle-CPS Internship - During the school year, I took a Database Design class at my high school. This summer, I'll be able to use that knowledge (hopefully) by interning at Chicago Public Schools' Enterprise Applications department, which is affiliated with Oracle Corp. It's a paid internship, so I'm planning on using the money I earn from it for either college or web hosting.
Tendian.io - Last spring, I founded ExT Web Solutions, which was going to be my web development firm. However, that never got off the ground as we had no clients and all of the employees were involved in their own pursuits. This time around, I'm going to do things a bit differently. Right now I'm in the process of setting up my own freelance development agency, and making the website for it. Next will come marketing my services to individuals and businesses, which I have made businesscards for. Eventually I want this to become a full-time job, which will pay off college and rent.
Meetups - While it's important to code as much as possible, it's also important to get a variety of opinions and expertise from others in the industry. So far, I've attended three tech events in Chicago, and I have another scheduled for this Wednesday. Time to do some real-life networking for a change.
Hobbies & Fun
YSFHQ: Project Kaizen - This project is huge. You can read more about what this is by clicking this link.
Open Source - Much of what I code is built off of open-source software, and so I feel it is important to give back to the open source community. This tumblr theme is open-source, and can be found on Github. Once I get a steady schedule on my other projects, I'll be able to do some more commits to my repositories. Follow me on Github and I'll keep you updated.
I hope I'm able to finish all of these. Time to put my project management skills to use.

My workspace at home this summer.
If you liked this post, I’d be very humbled if you followed me on Twitter.
1 note
·
View note
Link
To the students of Northside College Preparatory High School.
0 notes