Friday, June 20, 2014

I am still taking courses with Coursera. I finished the Web Applications Architecture class a month ago and am just now finishing the Digital Image and Video processing class. I complained the Web Applications Architecture class was too easy and they needed an advance class. They had us just copying code, not writing code on our own. The professor listened and he is offering an advance class this fall. Another student in the class alerted me to the fact that University of California-Berkeley was offering through Edx Engineering Software as a Service which used Ruby on Rails. It began not long after the Web Applications Architecture finished so it was the next logical step. The course is a much more intensive class and we do our own coding with pair programming on line. I have met people from all over the world this way. The course emphasizes Agile development which is new to me. The most new concept to me is doing testing using BDD and TDD. I had learned a little JUnit testing during my internship. We are currently using JUnit testing in Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems. Right now we are learning how to maintain legacy code in Engineering Software as a Service. I have realized what a rotten education I got at University of Texas at Arlington. I may have learned math, algorithms, and data structures but I did not learn good software engineering practices. I never heard about testing the whole time I was at UTA. When I was asked during job interviews what I did to test for bugs all I could say was put print statements in the code. I must have looked pretty stupid. I am taking the time now to learn some of what I should have learned. I did start a Machine Learning Course this week offered by Stanford University through Coursera. I do what to keep my math and algorithms skills current. All of the Coursera and Edx courses are much better taught than the classes I took at UTA. The professors lecture better and the courses are better organized. The professors seem really interested in teaching.

I am still stuck at home with a pulled leg muscle that won't healed. I can't walk far without the fear of falling. It is taking a long time to heal but I have to remember I was in pretty bad shape when I was first hospitalized. Besides broken down muscles I was lucky I didn't die of kidney failure. I am taking care of myself better now. Few skipped meals and no more throwing up food. Since I am no longer under stress like when I was going to UTA it is a lot easier to eat regular meals. I am still on the lookout for a telecommuting job. All of the many recruiters who call me say they only have on site jobs. I have found a few telecommuting jobs to apply to. The most recent phone interview I had with a hiring manager was for a Ruby on Rails remote position. They decided my Errai experience and class work in Ruby on Rails wasn't the experience they were looking for. She didn't ask me any specific technical questions. If I had made it through the first interview I would have been sent a coding challenge. I am wondering if I come off as some one hard to work with since software developers work in teams. I know being a woman in a male dominated profession it is harder to fit in but this last interview was with a woman.

Friday, April 4, 2014

I have been spending my time taking courses at https://www.coursera.org  A member of one of my listservs, I believe it was devchix, made me aware of a beginning Android course -Programming Mobile Applications for Android Handheld Systems. It was taught by Dr. Adam Porter of the University of Maryland - College Park. It was taught at the college sophomore/junior level so you didn't have to sit through beginning computer science stuff. The course assumed you knew Java. The course consisted of video lectures, online quizzes, and programming assignments. I started almost a month late so I had some catching up to do. The course is free and if you successfully complete the course you get a certificate of accomplishment. For $49 you can sign up for the signature track where you are expected to get 90% to get its certificate and the URL to it to put on your resume or give to your employer to show you successfully completed the course. This course had 150,000 students world wide so if only half of them signed up for the signature track Coursera stood to make a great deal of money so in the end the courses are paid for even though they are free to every one else. $49 is cheaper than a regular college course. I just wanted the knowledge so I wasn't going to pay $49 for it. This course is the beginning of a series of 4 courses in the Android Specialization. If you make it through all 4 courses on the signature track and are one of the top students Google will give you an iPad and the opportunity to put your final project in the App Store. The first course ended 18 days ago. I signed up for the next course, Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems, offered by Vanderbuilt University which starts in a month. I figured the Android knowledge would be good if some one wanted to use Errai to program for Androids beside the fact Android knowledge is in hot demand.

Right now I am taking 2 courses, Web Application Architectures offered by the University of New Mexico and Fundamentals of Digital Image and Video Processing offered by Northwestern University. The Web Applications class assumes you know a programming language and teaches you full stack development using Ruby on Rails. I didn't know Ruby on Rails so I signed up. This course has turned out to be easier than the Android course but I am learning new things. The Digital Processing class which started last Monday looks like it is going to be harder even though I got 100% on the first quiz. The course expects you to know calculus and linear algebra and uses Matlab to program.. This course has knowledge I wish I had 2 years ago when I was looking for a thesis adviser. One professor I approached who worked on programming for MRIs gave me one of his papers and said if I could implement it he would be my thesis adviser. The paper had such advance math my math professor cousin couldn't help me with it. I attempted the paper but I don't know why I thought I could do it when I didn't even know the basics of digital processing. I still would like to be able to implement the paper so that professor didn't think I am stupid.

Coursera offers 400+ courses in a variety of subjects at varying levels of difficulty. They are offering a beginning computer science course right now that uses Python. I almost signed up for it but since it was designed to be a student's first computer science course and I have already spent time on Python I figured it would be too easy. Other programming courses are offered for different languages and advance math required for computer science. I have found the courses to be enjoyable.

I went back to finish another online course on Javascript and JQuery that I started in October 2012 that I almost but never finish. It was with Alison.com not Coursera. I soon realized why I didn't finish the course. It is all reading, no videos, with a couple of short exercises at the end of a module that are not graded. I believe there is an assessment at the end of the course to get a certificate but I haven't made it that far to find out. The most irritating part are all the ads you have to put up with between each page of the sections in the modules to take the course for free. Most pages of the sections are rarely longer than a screen shot. When you go to the next page you have to look at an ad for 15 seconds while the page of the section is loading. For 30 pounds you can get rid of the ads in the course and for 75 pounds you can get rid of all course and website ads. I am not going to pay money for a course I am not enjoying. I could just as easy read for free without the ads an online tutorial and get the same knowledge just not get the certificate. The course isn't even well written. Online tutorials often have you build an example program as you go along to demonstrate the concepts. The Alison course is just snippets of code for exercises that don't tie together or build into a working application unlike Coursera. Coursera courses run during a set time frame with deadlines for quizzes and programming assignments if you want a certificate. You can go back to the course archive to review when the course is over. Alison courses are not during a set time frame. The advantage of taking the course at the same time as other people like with Coursera is you can discuss the course with other people on the class forum. Coursera courses are kept up to date. Alison is still offering Microsoft Office 2003 with no courses on the most recent editions. There's no telling how out of date my Javascript and JQuery class is. There is a box at the bottom of a page of Alison to ask questions but I have no idea how long it takes to get an answer or whether anybody is paying attention to the course. Alison claims to have 600+ courses which is more than Coursera but the quality is not the same.

Thursday, February 20, 2014

After learning some Python and Django, including how to do some animation, to the point I thought I could work a job (though not an expert), I decided to return to Errai. I thought maybe I could look at Errai with fresh eyes. I still had the three errors in my dependencies that I had left.

<!-- Errai Core -->
ArtifactTransferException: Failure to transfer org.jboss.errai:errai-bus:jar:3.0-20131120.224014-312 from https://repository.jboss.org/nexus/content/groups/public/ was cached in a local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced Original Error: Could not transfer artifact org.jboss.errai:errai-bus:3.0-20131120.224014-312 from/to jboss-public-repository-group(https://repository.jboss.org/nexus/content/groups/public/):No response received after 60000
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-bus</artifactId>
      <exclusions>
        <exclusion>
          <groupId>javax.inject</groupId>
          <artifactId>javax.inject</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>jsr250-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
ArtifactTransferException: Failure to transfer org.jboss.errai:errai-bus:jar:3.0-20131120.224838-305 from https://repository.jboss.org/nexus/content/groups/public/ was cached in a local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced Original Error: Could not transfer artifact org.jboss.errai:errai-bus:3.0-20131120.2248384-305 from/to jboss-public-repository-group(https://repository.jboss.org/nexus/content/groups/public/):No response received after 60000
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-ioc</artifactId>
      <exclusions>
        <exclusion>
          <groupId>javax.inject</groupId>
          <artifactId>javax.inject</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.annotation</groupId>
          <artifactId>jsr250-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

 <!-- GWT and GWT Extensions -->
Multiple annotations found at this line
-Missing artifact com.google.gwt:gwt-user:2.5.1

-ArtifactTransferExceptionfrom:failure to transfer com.google.gwt:gwt-user:2.5.1 from
http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Orginal Error: Could not transfer artifact com.google.gwt:gwt-user:2.5.1 from/to central(http://repo.maven.apache.org/maven2): No response after 60000
 
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <scope>provided</scope>
    </dependency>



I was still using juno Eclipse so I upgraded to kepler Eclipse like my mentor was using and was the most current Eclipse. In the act of updating I created a fourth error.

<plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>${gwt.maven.version}</version>
        <configuration>
          <logLevel>INFO</logLevel>
          <strict>true</strict>
          <runTarget>App.html</runTarget>
          <extraJvmArgs>-Xmx1000m -XX:MaxPermSize=500m</extraJvmArgs>
          <soyc>false</soyc>
          <hostedWebapp>src/main/webapp/</hostedWebapp>
          <server>org.jboss.errai.cdi.server.gwt.JettyLauncher</server>
        </configuration>
        <executions>
          <execution>
            <id>gwt-clean</id>
            <phase>clean</phase>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
Execution gwt compile of goal org.codehaus.mojo:gwt-maven plugin 2.5.1:resources failed Plugin org.codehaus.mojo:gwt-maven plugin 2.5.1 or one of its dependencies could not be resolved. Failure to transfer com.google.gwt:gwt-user jar 2.5.1 from http:/repo.maven.apache.org/maven2was cached in the local repository. Resolution will not be reattemped until the update interval of central has elapse or updates are forced. Original error Could not transfer artifact com.google.gwtgwt-user jar 2.5.1 from to central (http:/repo.maven.apache.org/maven2) No response received after 60000(org.codehaus.mojo:gwt-maven plugin 2.5.1: resources:gwt:compile process-resources)
          <execution>
            <id>gwt-compile</id>
            <goals>
              <goal>resources</goal>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
 The rest of the code is still at https://github.com/pmoessner/rpc-app1. 

This last error message appeared to indicate that I had some partially-downloaded dependencies stuck in my local Maven cache. To fix this I needed to try a build with Maven’s "-U” option, which forces updates:

C:\myapp> mvn -U clean install

(Note the U is a capital U, not lowercase.)
Before I did this I had updated Java. I changed JAVA_HOME to reflect the update :  C:\Program Files\Java\jdk1.7.0_51. I thought I was done with the update because when I ran C:\> java --version I got the correct version. I went to run the mvn -U clean install and got an error message that JAVA_HOME was not pointing to the right directory. It said JAVA_HOME = C:\Program Files\Java\jdk1.7.0_17 and to adjust environmental variable to the location of the Java installation. This JAVA_HOME had the value I had before I updated. I had since deleted the old jdk, installed the updated jdk and updated JAVA_HOME.  I tried just running C:\mvn --version and got the same error message. I went back and rechecked my environmental variables including JAVA_HOME and they were pointing to the update. I tried reinstalling both Java and Maven and still got the same error. I doubled checked all of my Java and Maven environmental variables. Nothing would work. I then remembered I had similar problems when I updated Java and Maven months earlier. What finally worked was to reboot my computer.
NOTE TO MYSELF: ALWAYS REBOOT AFTER UPDATING JAVA OR MAVEN BECAUSE MAVEN WON'T WORK IF YOU DON'T. YOU WILL GET A JAVA_HOME ERROR WHEN YOU RUN MAVEN IF YOU DON'T REBOOT. 

I'll be embarrassed if I forget this in the future. I had this in my December 18, 2013 post.
When I ran at the command line C:\myapp> mvn -U clean install that got rid of the fourth error. The first 3 errors were still there. To get rid of the first 3 errors I deleted the entire local Maven cache which I found under YOUR_HOME_DIR\.m2\repository. I deleted the whole repository folder. I ran C:\myapp> mvn -U clean install again. I then returned to Eclipse and went to Maven => Update Project. The 3 errors disappeared.