Posterous theme by Cory Watilo

Re-write of Project 1

Introducing Arudino

I felt like a tortoise in a race against a hare, actually against hundreds of them. While the majority of my high school graduating class figured out what they wanted to pursue as a career or a major to study in college, I was still way behind and could not figure out what I wanted to do. I felt the pressure bearing down on me, as if I were diffusing a bomb waiting to go off, to make a decision about my intended major. Which wire should I cut? There were so many to choose from. My parents suggested nursing school; however, my gut feeling said that was not the right career path for me. Fortunately and unfortunately, I figured out what I wanted to do after a year of college. I decided to major in Information Technology. I say fortunately because I eventually found the major I wanted to study and I say unfortunately because I only found that out after I was in college, just a little late. I believe that if I were given technical classes in high school, I would have had a better idea of what I wanted to study in college.

I have not used this specific technology before; however, after reading and doing research on it, I believe Arduino has concepts that would be valuable to someone pursing a major in computer science or information technology.

By looking at what Arduino is, we can begin to educate students about technology they might not have known about in the past. Arduino is an open-source microprocessor. One can think of a microprocessor as the “brain” of a computer. It is the central unit that takes in information and processes it out. A term to note in this definition of Arduino is that it is open-source. Open-source means that we can see how this microprocessor was made, to the point that we can actually create it ourselves. One might hear the term open-source more often in conjunction with the operating system, Linux. Linux is open-source because the source code is available to everybody. In other words, we can see the recipe used to cook up Linux. Unlike a common operating system that I'm sure most of us are familiar with, Windows, it is not open-source. Microsoft hides its secret recipe for the Windows operating system. Just in this definition of Arduino, we can inform students that there are other operating systems besides Windows and MAC. An open-source operating system is available for students to explore and learn about.

As I had mentioned before, one can think of a microprocessor as the “brain” of a computer. However, you will not find an Arduino microprocessor inside a desktop computer. Unlike a desktop computer, an Arduino microprocessor will use switches and/or sensors to take in its environment. An example of this is the Botanicalls Kit. (http://www.sparkfun.com/products/10334) This is an example where sensors are used to read the moisture levels of the soil and Tweet when the moisture levels are low. Thus, letting the owner know, hey, you need to water your plants! Giving students this kit to build would be a start at introducing concepts of electricity and learning terms like ohms and resistors. 

You might be thinking, how is this possible? To me, Arduino is a developer’s tool. It is highly customizable. One can think of it like Play-doh. With Play-doh, you can mold it into anything you want. Or you can even think of it like Lego. You can work with one, large, flat Lego board and the Lego blocks stacked on top of it to make whatever you desire. Arduino is similar in that you can add other components to it in order to make it do what you want. What makes it possible for the plant to Tweet when it needs water is a combination of the Arduino microprocessor, wires, resistors, cables, sensors, and most importantly the code, or the instructions. A lot of mechanical products you buy will come with instructions. For instance, a game console will come with instructions on how to use it, how to turn it on, how to insert a game, what the buttons will do on the controller. Or a microwave will come with instructions on how to set the timer, or the power level, or perhaps the clock that is built in. The Arduino microprocessor is not going to know what to do without instructions.

The instructions are not written in sentences like you would find in a manual, they are written in a programming language similar to C++. However, I would not be discouraged as Arduino was originally created for designers, architects, and artists, all whom of which may not have a science and/or engineering background. “From its inception, the Arduino was developed to engage artistic and design-oriented minds.” I believe this is a language that will be easier to learn than other languages like Java or Ruby. This will give students an idea of what programing is like and may inspire them to learn other languages in the future or avoid programming entirely. Nonetheless, it will broaden their knowledge about computers.

From this comes my stance. I believe that Arduino should be introduced to us at an early age. At the least it should be presented to us in high school. If I had a class in high school that taught students about Arduino, I might have found out early on that this was the field that I wanted to get into. Nevertheless, learning about the Arduino microprocessor and how to use it would be valuable. We are surrounded by technology. Almost everywhere you go, you will find a computer. Arduino can be a tool to teach students how to program, and have a better understanding of electrical circuits. Arduino can have instant gratification which may be appealing to younger students in that the basic tutorials can be accomplished within a class period. There is a growing support community of people using Arduino and a plethora of real world examples of where Arduino is being used today.

(http://www.arduino.cc/playground/Projects/ArduinoUsers).>

For students making a decision about their career, working with Arduino can be a first step at making that decision. Working with this technology involves problem solving, troubleshooting, understanding electronics, integrating components with other objects, and programming. If a student finds interest working hands on with the equipment, information technology may be the direction to head. On the other hand, if a student enjoys programming, perhaps computer science would be best suited for him/her.

Overall, Arduino may help give insight to students trying to figure out a major to study, or a career to pursue. Like Play-doh, Arduino is malleable and can stretch the creative mind to make amazing things. I'm looking forward to see what others can create and see Arduino evolve.

 

References:

http://www.sparkfun.com/products/10334

http://arduino.cc/

Week 16

It’s the last week of class for Humanizing Technology. It's been a great semester. Project 1 pushed me outside of my boundaries, outside of my comfort level of technology and brought me towards Arduino. It was something I haven’t heard of before, and I enjoyed doing the research on it. I’ve decided to take a summer class that incorporates Arduino, so I’m very excited for that. Project 2 really pushed me to my limits. I do simple web updates for the School of Applied Technology. That involves basic knowledge of HTML, CSS, and Javascript. Creating the CTA interface in HTML from scratch involved lots of sleepless nights and numerous revisions of code; however, it pushed me to learn more about HTML, CSS, and Javascript. In addition, I worked with a great team that all pulled their weight in different parts of the project, which helped out significantly. I feel very fortunate to have worked with such talented students. Project 3 allowed me to look back at the entire semester, thinking back to the CODE book, how technology started, how it has evolved, and the interaction between humans and technology, or the merging of the physical world and the digital world. I got the chance to talk to my girlfriend’s grandfather about a lot of things, and the most interesting thing we talked about was his experience with computers, or lack thereof. His story became an inspiration for project 3, as well as helping me figure out what I want to do with the rest of my career.

 

Check out my personal statement at http://adriancabrera.squarespace.com

Week 15

Project 3 has been assigned to us, and I think I will take the project on developing a personal statement. It's a fairly open topic, but I know I want to talk about specific things:

1)     Current issues we have with technology - from a usability point of view

2)     People that have made efforts to humanize technology

3)     Importance of usability, the user experience, emotion, etc.

4)     What I want to do and more about my views

 

Week 14

Comments on Abstracting Craft, The Practiced Digital Hand by Malcolm McCullough

This article associated the concept of "craft" to the technology that we have today. We think of a craft as a kind of art form, something that takes practice, something that takes a long time to perfect even to the point where you don’t even have to think about what you are doing, you are just doing it. Usually we think of craft as something we do with our hands, something we can manipulate. Technology has, in a way, stunted that. Thinking about a computer decades ago, we were limited to a keyboard and mouse, where there was not much room for creativity and expression. In addition, technology moved so fast, that it was difficult to take your time with it, to make it a craft.

McCullough talks about the good and the bad in new technology, the great technological advances and the unfortunate setbacks. Although at first, it seemed that craft would be impossible with computers, the author mentions software like CAD, which allowed an individual to create like people once did with wet clay. I feel that McCullough wants something great to come out of a person, not the computer. He wants that masterpiece not created by the computer, not for the computer to do all the work, but for the human to create something great.

I feel that Apple has done a great job with making their technology transparent to the user. Products like the new iPad have really found a way to integrate into an individual’s life. No longer does the user see themselves using a device, rather something that is an extension of themselves. When a user is holding an iPad, he/she doesn’t intentionally think that he/she is holding a camera, or a computer, it is just something that he/she uses. I feel that some Apple products have matured to the point where people can be creative with it and create something great.

 

Week 13

Some add-ons we had for the interface in addition to what the current  fare card machines have, is the ability to purchase unlimited passes. We also created the ability to let users choose a destination on a map. This would then provide them with an itinerary, or a list of where to go/what stops to go to.

We performed more user studies to continue to make changes to the interface.

To take this interface to the next step, we were thinking of having a completely integrated system. A system that connected fare card machines, to a website, to a mobile application, etc. To have one main system that connected everything together. One advantage of this would be to allow users to add money to their card whether they are on the website, on a mobile application, or at a fare card machine. A potential feature could be analysis of a user’s spending habits. This would allow the CTA to suggest a purchasing an unlimited pass. Another idea is to have smart phone integration with the bus or train stops. An individual with a visual disability could use headphones attached to their smartphones to hear what stop he/she is at via GPS location. 

Week 12

This week we were given a challenge. Our challenge was to come up with icons to represent the words on our interface. This would allow people who are illiterate to be able to use our interface.

The group and I had some difficulties coming up with appropriate icons. We would come up with something, but it could also be thought of another action. This was tougher than we thought.

Progress done on the interface: added more CSS to create more visual appeal. We created buttons that would look like they got pushed in when pressed. The buttons are currently blank and we will make icons to put on the buttons. We also added gradient fills for the header and footer.

Week 10

Now that the paper prototype is complete and has been discussed with the group we can move on to a draft of the interface written in HTML5 and CSS. I had some disagreements with the group. After making the paper prototype, I felt that we needed to finalize on a design. We needed to finalize how the interface would look, where the buttons would go. And I say that because, I don’t want to write all this HTML5 and CSS code, to then change it to the groups liking. It is easier to throw out ideas about a final layout of the interface through balsamiq, a wire framing tool, than to rewrite code. I tried to express my thoughts to the group, but they didn’t seem to want to finalize on a layout.

Normally, when I create web pages, I use HTML5 boilerplate and 960gs. I decided to try something new, another boilerplate called getskeleton. It uses the same concept has 960gs; however, according to their site, getskeleton resizes well for tablets and mobile phones.

After creating the draft interface, it turned out to be more work and more pages than I thought. But the rough draft is done, and now I will see how the group likes it. We will see what we need to do next. Right now it’s only written in HTML and CSS, I’m sure we will add jquery to add some nice visuals.

Week 9

Comments on 7 Languages in 7 Weeks

Wow, finally on the last language. This feels good =)

Haskell

Haskell was hard...

Haskell is a functional programming language. It uses static typing like Scala and is supposedly “the most effective type system of any functional language.”

Haskell feels like Erlang with the module declarations and list comprehensions.

During the interview, I agreed with Walders statement, “Any good programming language really becomes a means of extending itself to embed other programming languages specialized to the task at hand.”

Self-Study Day 1
1) haskell wiki: http://www.haskell.org/haskellwiki/Haskell
2) online group: http://hackage.haskell.org/trac/ghc/wiki/GettingStarted

Day 2 goes over higher-order functions, partially applied functions and currying, function composition, an lazy evaluation.

I got to see map, fold, zip and zipwith. Some of the lazy techniques were the ones I used previously in Clojure. All functions in Haskell are curried. And we used partially applied functions to translate a function that took multiple arguments at once to one that would take single arguments at a time.

Day 3 went over types, classes, and monads.

Self-Study Day 3
1) monad tutorials: http://www.haskell.org/haskellwiki/Tutorials#Using_monads
2) monads: http://www.haskell.org/haskellwiki/Monad

 

Comments on The Human Factor

In the second half of the book it talks about the political side of things. The author covers the case of E. coli in Ontario and finds system design elements like legal regulations and budget allocations which found its way affecting environmental factors and eventually leading to the tragedy of people dying and getting sick.

The author says that we need to find a way to improve our lives and move away from the technology that has caused deaths. There are ways we can do this, for example, being smart about the items we buy. We should purchase items that hare more human-tech. Use technologies that are human friendly. If we can start making better decisions now, we will have a better future tomorrow.

 

Comments on Project

It was harder than I thought, coming up with a simpler design. Its hard to create an interface, if you don’t use it on a daily basis and understand the frustrations other people are having. I’ve used it once just to give feedback to the group about my experience using it. It was a large machine, a lot to look at. I wasn’t sure what to look at first. Obviously my eyes immediately focus on what’s directly in front of me at eye level, but I’m still confused as to what to do first. I later found instructions at the top of the machine. However I felt like I didn’t have enough time since there were people behind me. I felt rushed. I agree with the group, we should have a touch screen, one that is at eye level. This way the user does not have to look anywhere else around the machine. In regards to designing the interface, I think it would be most beneficial for us to do paper prototyping and present it in front of different people and get immediate feedback. I think this will help us decide on a solid design.

 

(download)

 

 

Week 8

Project 2 Humanistic Design/Redesign 

We have decided to go with redesigning the CTA fare machine for project 2. The CTA fare machine is an object that numerous people use on a daily basis. But not only do Chicago natives use it, people from out-of-state use it, and possibly tourists from outside the US. According to my classmates, this machine can be confusing to use, especially for someone that has not used it before. I suppose I have the luxury of living in the suburbs and not using this “terrible” machine; however, we figured out that I would be a great test subject to see how “terrible” this design was. I have not tried it out yet, but I will the next time I’m in Chicago for class.

I’ve started to have an interest in user center design. A professor once said in class that there will always be a competitor to a product that you will create. The product that will win over your audience is the one that is easy and simple to use. I see evidence in that in Apple products. I’m not saying that Apple products are the best; however, they do a great job with design. They have created an easy to use interface that does not require too much instruction. Most tasks can be done intuitively. Interfaces that are hard to use will not make it in the market.

Through pictures from my classmates, I have seen that the CTA fare machines are not all the same. Some only accept credit cards, some only accept cash. The machines are not standardized throughout the city. I believe it would be best if they were the same throughout. This would reduce confusion and reduce the amount of time needed to learn a new machine.

After doing a quick search through Google of other fare machines in other cities and countries, I found that color blocking was a nice way to segment different sections of the fare machine for different tasks/uses. For example, a portion of the machine would be colored red. This was the cash return. A portion of the machine was green to signify the starting point of a transaction. A blue section to signify a place to swipe your credit card. Finally, a green section to tell the user to place cash here. I think color blocking, if it isn’t already implemented here, would be a great idea.

Overall, I’m excited to work with the group. We come from slightly different backgrounds of IT and Communication. Most of us have some experience in web design, others in mobile application development, and finally networking in IT. I’m excited to see how far we can get this idea/product to go, I believe we have a great group =)

Week 7

Comments on 7 Languages in 7 Weeks

Clojure

Clojure is list processing that runs on java virtual machine. It is a functional language with data structures such as lists, maps, and vectors. Lists are ordered collection of elements. Lists are used for code. Vectors are ordered collection of elements as well. Vectors are used for data and optimized for random access. Sets are unordered collection of elements. Maps are key-value pairs.

We can define functions by using defn and def for defining data. We also have the ability to access any portion of an argument as a parameter. Anonymous functions allow you to create unnamed functions.

Day two covers sequences, macros, and protocols and records. A sequence is an abstraction that wraps around collections. To test a sequence you use the predicate function. In day two, we are also introduced to lazy evaluation. This allows us to make and efficiently work with infinite sequences.

Day thee focused on concurrency.  It supports the concept of software transactional memory. Also discussed in this section are atoms, refs, and agents. All three are wrapped pieces of data. In a reference, you cannot change a reference outside of a transaction. On the other hand, Atoms allow you to change outside the context of a transaction. Finally, an agent will block until a value is available. Data can be mutated asynchronously using functions.

 


Comments on The Human Factor by Kim Vicente

In the first chapter, Vicente talks about how technology has gone far beyond human control. He goes out and observes situations where people are using technology without considering and taking into account the human factor. Things are built, human error occurs, and sometimes lives are lost. Overall, although technology can be good, according to Vicente, it is getting out of hand and people are dying.

 

This problem is occurring because two entities are working separately instead of together. There is the mechanical entity that engineers a product without taking the human into consideration. And the human entity that forgets that machines are an important part of human activity.

I think too often, a product is created for its function and not taking into consideration that a human needs to easily be able to use that product. Sometimes I think about Microsoft Office in this way. Office has a great suite of products, but there are always a lot of buttons to press, none that are intuitive to select. The functions are there. The usability is not.

I thought that by reporting near-misses in the hospital was great. A 90% reduction in medical mistakes in a hospital is great news!