Friday, September 5, 2008

Found this in Jeff Atwood's old blogs....

Next week, millions of college students and young professionals will head home for the Thanksgiving holidays. We’ll sit with our families in warm, candle-lit dining rooms eating stuffed turkey, reminiscing over old photographs, preparing holiday shopping lists and … Please. Let’s be frank. We are going home to fix our parents' computers.

Wednesday, July 9, 2008

the conversation I had today...

So a office mate of mine was at a meeting where my name turned up. Apparently another co worker needed to talk to me and so my office mate told me so. I went to go find the co worker that needed to talk to me, only to find out that he was talking about someone else. That conversation went a little like this.

Me: "Oh hey, you wanted to talk to me about a project?"
Co-worker: "uhhhh....."
Me: "Something about a project, my office mate told me you wanted to talk to me?"
Co-worker: "OH! that's another Ed, when I said that this demo was so easy EVEN Ed could understand it. I didn't mean you. I meant our marketing guy Ed." *laughs* "I need to straighten this up with your office mate."

So we walk over to my office and straighten everything out and have a good laugh. Somewhat at my expense.

Me: "That was actually really funny."
Office mate: "It's a good thing he wasn't talking about you."
Me: "Nah it's cool. If you can't laugh at yourself who can you laugh at?"
Office mate: "Ugly people."
Me: "wow..."
Other Office mate: "Isn't that why they were born?"
Me: "wow that topped the first one."


And so we come to the realization that ugly people are there for you to laugh at.
I'm going to burn in hell. But hey I'll have my office mates to keep me company!


Also, up on our whiteboard:

"office mate".name = "Aaron"; //aaron is not his real name
If (time == 12:00)
LunchBreak();
Else If (FAIL)
BackToWork();
Else If (hoursWorked == 8)
GoHome();
Else
YouFailAtLife();


I love my internship.

Friday, June 27, 2008

Death of a great man.

George Carlin passed away this past sunday. He was one of my favorite entertainers. A great man and a sad loss for humanity. If you haven't heard of him, look up "seven dirty words you can't say on TV." Great stuff.

Wednesday, May 28, 2008

I love you google... but wtf?

Dear Google,
.... no I'm not going to start my blog this way....


So I had to help my GF out tonight. She was working on a Powerpoint presentation and my help started out with trying to describe how a silicon chip was made. I had to explain just the part where they cut the wafer and transfer the dye to the lead wires. That was excruciating enough.

When she finally finished her Powerpoint, she needed to send it to her professor but the email attachment limit was 10 mb on hotmail. She couldn't send it, so I told her to get a Gmail account because the attachment limit was higher, I think. I'm still not sure...

I really don't mind waiting or helping her at all, actually my beef is with Google. I'm currently uploading this file and I expected to see some kind of progress bar displayed on the screen but all I get is this infuriating circle pie chart thing that keeps rotating without giving me any information of whether or not I'm close or far, or even uploading at all. I still have to check back every minute or so to see if it is complete.

Isn't there ANY way to let the user know if the upload is still in progress and just how far along they are? I haven't read any of Jeff Atwood's blog in a while so I went through 6 of them. SIX! 6 blogs later, and I'm still waiting for this upload to finish so I can send out a simply email with a link to this Powerpoint file. Is a small progress bar so hard to ask for? I'm still checking by the way.

I know this whole rant is really insignificant and something that probably never crossed the minds of the developers at Google but isn't this what we've come to expect from them? To think of the things that we would never think of? They have programs like sketchIt that is pretty much parallel to AutoCAD. Google. AutoCAD? I would have never thought they would make something like that... couldn't they have at least let me know how much longer my upload will take? But then again, I just felt like ranting.

She also ran into the same problem on hotmail but closed the window after a while because she thought the window or something crazy crashed...

By the way, I'm still checking that rotating pie chart of hell.

Wednesday, April 2, 2008

Infomartive Workspaces Review

Introduction:
This project is basically using 9 screens as a information radiator. The screens should be set up so that information about project should be easily accessed and "indulged" without any obstacles. Right now there are a three screens devoted to the discussion boards for each of the three other projects. The other 6 boards are divided into Hudson, graphs, a blank page, twitter and the core of the project, a project overviewer. Although the rest of the pages are somewhat useful the project overviewer is supposed to be the meat and potatoes of the 9 screens. This screen should show you at a glance what the current state of the project is.

Installation:
The installation was a simple addition to the tomcat program. This is very simple for me since I'm used to tomcat. But to any other regular user that just wanted to try and install this program would have a hard time trying to install tomcat in the first place. Especially since, they offer to link to where they can learn to install tomcat. Other than that, without modifying two lines of code you will have to use their data. I don't think shipping out your own information with your product was such a great idea. If anything they should have a space in their developer or even the installation guide that shows how to change this information to suit the user. This also brings up the fact that they don't have any information about hackystat and how to obtain an account from them as well. I would have to saw the installation is pretty weak for anyone that is not familiar with all the tools involved.

Code Review:

The amount of comments seem to be kind of low. There is only comments for each method but nothing to explain what is going on within the actual meat of the code. You kind of have to just believe what th comments say about what the methods do. There is also a lot of commented code that is still lurking around here and there. I also don't know too much about wicket so I don't know what to really do with this code but I can sort of follow it through.

Overview:
I didn't really like the diagram tree that was used to show how the project was coming along because it felt like it was too big and obstructive. It didn't really radiate data and actually made me shift my focus away from those two screens. I'm not too sure of what is out there right now but coming from a ambient devices point of view, I think something with more color would shift focus back to that page and maybe even something that moves or is interactive.

As a information radiator it should not only be easy to see what you need to see, but it the data should be enticing. I feel like if I walked into the office every morning, instead of trying to avoid the informative workspace, I should want to go up to it, play with it a little, explore what I can learn from it today about the project, and also see the progression of the project as well as where people are working on the various parts of the project.



Wednesday, March 19, 2008

iHacky review

Introduction:
iHacky is supposed to be a sort of social network within a social network. This have some inherent advantages such as using the original social network to spread your own base. But it also seems repetitive. The idea kind of makes you ask yourself, "why?" After actually installing the application and being an avid Facebook user, I'm starting to see the light.

Installation:
As for installation, installing the iHacky application was the easiest out of all the projects so far. All I really had to do was click on the installation link on their installation guide, click okay a few times and there it was. It was a bit spare but I could really see some potential in it. I wasn't able to install the iHacky server side application because PHP is actually really hard and actually convoluted to install. As far as the code goes though, I really don't know PHP as well so it wasn't really worth installing anyway.

Code Review:
Although I don't know too much about PHP, one look at the code and I can tell that it is clearly documented. There really isn't too much code which goes to show just how powerful PHP is with web development but it is not so complex that you can't follow what is going on with each page. To be honest, it looks a lot like the MyIsern project we were working on last week.

Overview:
As for any bugs that I've found, the home page has a link that links back to my own Facebook homepage. Clearly, this is really not necessary. I have a link to that at the top of my page already. I really don't need another one. On top of that, there really is nothing on the homepage at all. Although the base code seems to all be there, there really is nothing functionality-wise. I can find anything that really attracts me to the homepage and gives me something to do while I browse away on Facebook.

On the profile page I find more of the same. There is again a link to my own profile. I don't really see a need for this. Instead, how about a few boxes where I can start editing my own profile already. Somewhere where I can add what languages I'm good at or at least know something about. If not, maybe a little area where I can insert my coding "motto" or a blog section. If this is really going to be a social network, within a social network, you might as well take the best from each social network. There are websites like xanga, myspace, facebook, and orkut. Each one has people attracted to it for a special reason. I think this application needs to find that special something and put a iHacky twist on it.

Tools look like somewhere I could put in something about the languages that I work with but right now it has nothing. There is a cool autofill search toolbar but with so little people on the application, it's not very helpful. Another idea that could be used here would be a section to add/edit/delete my own tools. Hey maybe even a section where I can elaborate on the tool, such as how long I've work with this tool or maybe even where I've used it before. Why not a link to the project itself. The idea is to link people that have common interests, but you can't find people with common interest if you don't list the project you work on. It's easy enough to on sourceforge and look for projects, but what if you wanted to know more about the developer? This would be an awesome niche for that some of interaction.

The more I go through the site, the more it seems like the site should be more compact. There shouldn't be a separate tab for tools, teams, and projects. They should flow into each other and if need be, a search that you can use to find any of the three. This should be easy since we did this through MyIsern.

There is an invite tab but nothing there. I would rather not be enticed with this if there is nothing to do here. Really.

Also, like any good web developer, you don't want all your contact information all over different pages where they might not be relative. If it is then, of course it should be there, but you should also have a page where they could get in contact with you if they need to. Maybe a contact page?

As for any other tasks, tab, or other options, a profile picture would be nice too. Bulletin posts? Maybe you want to send out an announcement to everyone you know about a new project you're starting? This social network was originally based on college student trying to connect to each other, so you should take advantage of this and try to tap into that network. Listing what college you went to will also help you find people in your ICS class that you haven't seen in a while and catch up to them. So why not a message feature as well?

Monday, March 17, 2008

09.Hudson

To really talk about what I learned about Continuous integration before this assignment, I really need to go over what I knew about it before. I knew that Hudson was a continuous integration application but I originally thought it was just a server program that would keep a copy of your project and build it for you. I had have the idea right. I didn't know what it actually grabbed a copy of your project from a SVN repository and then built it for you. I also didn't know that it used ant and a bunch of other QA test software that we were already implementing to basically build and run tests on our project for us. I also didn't know what Hudson will also send out an RSS feed or some other notification to let us know of some error. I thought we would have to check in on Hudson ourselves.

I really didn't encounter any problems getting Hudson to work with our project since we use a SVN repository, Java, and all the other QA tools for java like ant, PMD, CheckStyle, and such. For the most part it was just setting up the project that took a while. The things that gave me problems were finding my SVN http link, the password for the SVN account and things like that. It really wasn't much of a problem at all.

The steps needed to actually set up Hudson with our project are pretty standard. First off we needed to install Hudson. This is easy enough because we just needed to "java -jar hudson.war" or deploy the Hudson war file into any running server application like tomcat. Then we need to set up the ant installation which just meant going into Hudson homepage and clicking on the "manage hudson" and "system configuration" links then add the local directory for ant.

Then we need to set up the SVN repository with just amounted to clicking this link, "http://localhost:8080/scm/SubversionSCM/enterCredential" and typing in the link for your SVN repository and the respective account username/password combination that you've set up just for Hudson.

Then we need to set up the project. We needed to click on the new job link on the homepage and select "Build a free-style software option." On the next page, we need to setup Hudson to use SVN, how often we are going to poll the SVN, and what to run (ant) when we build the project.

Now Hudson should already start to download and build the project. The only other thing to do is to set up all the other QA tools and we should be done. This is just as simple as downloading the plug in's from the Husdon webpage and installing them under the "Manage Hudson" link that can found under the main page. After installing the plug in's and restarting Hudson, there should be a "manage plugin" link under "Manage Hudson" link. From here you can manage all the different tools such as PMD, FindBugs and such.

Wednesday, March 12, 2008

hackystat-sensor-visualstudio -- Code Review

Introduction:
I was actually pretty interested in testing this project because I was curious to see just how data could be taken as you are coding. It wasn't what I thought it would be but it was interesting nonetheless. They expected to retrieve data on the programmer by monitoring how changes in opening, saving, closing files and such would indicate some kind of change of state. I don't really see how much data could be taken from these actions but they added other actions such as compiling the code, state changes, changes in the buffer and program itself. I could see some data come from this but it's really quite vague on just what kind of data could be had here. It seems like all the data being collected are things that I should know as I'm coding, it would be nice to see a sensor that could take the code I've written and give me data that reflects whether this file has an associated test that goes with it, or if there was a sensor that told me that I was writing code that would not be executed (i.e. white box testing).

Installation:
Other than the fact that getting Visual Studio 2008 was extraordinarily difficult for me (I did not have a MSDN account and wasn't aware of that till the last minute), the rest of the install was a breeze. I was able to download the files with no problem. I was able to follow the instructions online and installed the sensor with no problems. This is to say that I already had hacky stat installed and for a regular user there should be a bit more information on how to install just the "essentials" of hackystat.

A few problems that I did run across was that I didn't have .NET 3.5 and I had to download and install that along with Visual Studios 2008. I think this team should make a note of that for future releases. On the plus side, although I was blocked from using the sensor without this piece of software, the installer did direct me straight to where I could download with ease.

I could also possible see someone getting lost when trying to install hackystat. They should be specific to which part of hackystat they need to install. Also the very first line of the installation guide reads, "
This sensor is compatible with Visual Studio 2008 or a Visual Studio version that supports up to .NET Framework 3.5." I had Visual Studio 2005 install with the .NET 3.5 framework and it did not work. They should change this to reflect that.

Code Review:
I'm not to familiar with C# but it was surprising to see that it was very similar to Java. I have no idea what the coding conventions are so I can't really say much about that but I was able to follow along with the code without much difficulty. There was a slight error with
"VisualStudioSensor - For Testing.Addin." Apparently it was looking for a file that was not there. I checked the installation guide and could not find anything on this file. I really have no idea what this file is for but I was able to run through the rest of the program without any errors.

Bugs:
The few bugs that I found were running more than one instance of the program caused the sensor to crash. I don't know if this is something they never planned for or if it is a deliberate function.

The status bar text reminding you that the sensor was initiated only works when Visual Studios is started manually. If I opened a .sln file there was nothing to tell me that the sensor started.

There was also another bug with NUnit gave some kind of error but this was fixed with the latest release of the sensor.

There is also that Testing.Addin mentioned above ealier.

Overview:
This project installed very easily and ran almost without a hitch. The only problems that I really ran across was a few errors that had to do with multiple instances and basically things that I would do only to "break da bugguh." Other than that, each of the DevEvents worked fine. I was able to open, save, and close files and see it reflected on the project viewer. I was also able to use the other feature and find corresponding DevEvents on the project viewer as well.

Wednesday, March 5, 2008

Ambient code review

Passing the verify:
It seems like a lot of people were having a lot of problems with this and this is mainly our fault. The Junit test rely on the fact that you go in and manually change the test to reflect your information. We didn't annouce that well enough so many people had problem with running the verify.

changing the Color of the orb:
It seems like everyone knew how to change the color of the orb but the main complaint was that it wasn't intuitive nor was it "simple." Only someone that knew the system well or had the system explained to them could probably manage to get this done.


Improvment and suggestion:
I think that the biggest problem that we face in this code is the shear lack of documentation. It seems that a lot of people got lost along the way with just what each piece of code does. We almost assumed that the name of the files would be enough to explain the code itself but it seems that the javadocs were not enough. We need to document the code better so that other can understand what is going on.

Top 5:
1. Latency
2. Documentation
3. too many libraries
4. Verify fails
5. No listing of options with orb

Summary:
A good start but there is definately a lot of work ahead as well as some back tracking with documentation. It seems right now that the code works well with the options that we have but at the same time, no one but us really knows how to use or how the system works at all. We need to fix this by adding more documentation and a fresh interface.

Sunday, February 24, 2008

07.REST

Our project does need to provide a RESTful interface because we need to construct the HTTP protocol that will eventually make the ambient device perform an action. Since all we are doing is changing the state of the ambient device by way of a trigger from the hackystat senser database through the use of a hyperlink, all the REST principles and execution can be used to construct that link.

For instance we can give each action and trigger an ID and use the XML to link them together, but there only needs to be one representation of the resource. This representation of the resource is the "action" via a HTTP hyperlink to the ambient device. At this point, the standard methods we would uses is the HTTP protocols like GET and PUT and the communication would be stateless since all data is kept on the hackystat sensor database, and since we are just generating the hyperlink itself and then sending it to the ambient device via the Violet server or Ambient server we can still use the REST architecture to create that link. We also use the web UI to link each trigger to a specific action and can use REST here as well.

Yes it does obey the REST design principles because there is a an ID for every given "thing" that thing being the Sensor Data resource instance. There is also a project/user URI specification which is the what is used to give each "thing" there ID. Everything is done with XML and uses default implementation constraints to link all the data together. It uses the HTTP methods to support access control. This is where the standard methods come into place. All data is return in XML form so this also follows the REST principles of return a resource, although it not multiple representation it does return a resource through a XML representation.

Yes the projectViewer does not seem to obey the REST principles. Upon further research it seems like the projectViewer relies on RPC, which is the Remote Procedure Call. This procedure sends a request to a remote server, or even the local server, and passes along the information that it gets. Then it moves on with the rest of the code. So unlike REST not all of the code is linked together but sections could be located on other servers and remotely activated.

Monday, February 11, 2008

04.Hackystat

I was able to complete the entire assignment and didn't have much difficulty. The only problems I encountered were trying to get through all of those guides. At first, it really seems overwhelming and tedious to install all the sensors. To start, eclipse was simple enough and I had no problems with that. But installing Ant and all the other QA tools left me a little confused. I'll admit that it did take me awhile to get back into the habit of using Ant and that might have contributed to some of that confusion. But what really kept me from moving on was just the sheer volume of data to go through. I didn't know where to start or really where to go next without carefully reading the pages. In the end there wasn't much to do at all other than setting all the environmental variables. All in all it only took me an hour to install all the sensors, sign up for an account, and get everything up and running so it wasn't much of a road block at all.

After having experience using HackyStat I can definitely see this as a rich source of information that can be used with the Nabaztag or the other ambient devices to clearly signal to users and developers of almost any problem that might be plaguing their projects. As for my own development through coding, its great tool to see the progress of your work and to make sure it's done right.

As for the three prime directives, it clearly fulfills all three. It clearly accomplishes a useful task because this system will instantly update the user will all kinds of information. It's also way easier to read then the command line prompt that you get in MS DOS. For the second prime directive, I was able to install all the sensors, sign up for an account and start using all within an hour so it easily fulfills that directive. Lastly, the last prime directive is fulfilled as well because there are more than enough wiki pages that go into detail on how a developer can install the system and get to producing something more for it as well.

It's easy to see that HackyStat fully covers all three prime directives and it also shows me how a "real life" program should. The installation process, although a little confusing, greatly document the entire process. There are pages on how to use every aspect of the program as well as many pages to show how to develop on to it as well.

Friday, February 8, 2008

worse is better.

So I read an article today and I thought wow. Philosophy and Computer Science all rolled into one. Jeff Atwood's blog on worse is better was about Steve Martin book and how Steve Martin talked about not trying to be great, because you will inevitably great for at least one night, but to strive to be consistently good. Then he relates it to how programmers should also strive to be consistently good. This made me think about my programming as well.

It seems that as a undergrad studying computer science, all of my project seems to be my shot at being the best, making the best code that I can possibly write for the best code I can possible get. Now is the whole approach of trying to be great with each project striving to be great once, or trying to be good all the time?

I think that I should not focus so much on trying to write the best code for each project but rather just try to shoot for writing good code consistently. To be honest I really have no idea how to go about this. But it nice to think about for now at the end of the week while waiting for my friend to get out of class so that we can go lift.

Tomorrow I'll be back at work with my 414 project but I'll try to remember to consistently write good code. Whatever that is.

Friday, January 25, 2008

What I've learned from building my first version of a professional portfolio

So while building my professional portfolio I've discovered that I still have a lot to learn. I really thought I had learned a lot over the years at UH but when I try to put it down on "paper" it seems that I really learned quite little. It's not that I haven't learned anything or that I haven't put in any effort. It seems that compared to the rest of the world I still have quite a bit of my own learning to do.

Right now all I can really say is that I've had experience in writing in Java, C/C++, assmebly, and SQL but I haven't really done anything with real merit. I haven't worked on a open source project, which I plan to do, that actually required me to go beyond what I know in a classroom or feel that I can accomplish in a classroom setting. It seems like all the project I've been working on has already been done by someone else and I'm just rediscovering their steps. I feel that I need to go beyond my comfort zone and dip into something where I would have no idea how to go about it and find a solution to a problem.

I know right now that I have the potential to learn any language and excel at it but I haven't found a driving force for me to go out and just learn it. I know that it isn't that simple and that along the way I'll have to learn a lot about language theory and business practices but then again there is the internet and that's what it was originally created for, no?

One of the blog that I've been reading religiously is Jeff Atwood's "Coding Horror" which is a great blog that talks about all the problems that he runs into in the industry.

http://www.codinghorror.com/

Another great video that was emailed to me during the course of last semester class is this video on programming languages and web interfaces.

http://oodt.jpl.nasa.gov/better-web-app.mov

He goes on about how J2EE is not the best for web interfaces because turn around time is absolutely vital to development.

There is also Ninian Wang's blog who is a programmer for Google. I happen to stumble upon this page one day and been reading her blog ever since. She really talks more about life but there are a few gems here and there that relate to Google and how it like working for such a huge and well known company. This is where I want to be someday, soon. I hope.

http://niniane.org/

I hope that one day my blog will be worth reading for other budding developers. Hopefully I'll actually have something worth while to say then.