Creating a HTML5 Desktop App with NW.js

If you haven’t heard of Slack, a app for team communication, then I highly suggest you check it out. I use it to communicate with my developers at SlickScript, with the managers at Lunardi’s and have used it for some projects in class. Its simple, clean, speedy, and in short I really really like it. What I like most about it, besides the three reasons above, is that it has the same look and feel no matter the format in which it is used. That is Browser, phone, and desktop app all have the same look and work in the same way.

I have been thinking of creating a schedule app of sorts for Lunardis since their way is very inefficient. First they write their schedule, a rough draft of it. They take this rough draft and re copy it over while at the same time looking for any mistakes they may have made. After this, they again re copy the schedule to make it clean and readable. The schedule is then posted for everyone to see throughout the week and come Friday the managers take it down and fill out payroll based off of it. However, payroll has a different format. The managers must add up all the hours that someone works and place what they get in the appropriate columns. These columns include; reg hours, Sunday hours, overtime hours, and something called prime hours which is the hours between 10pm and 6am where clerks make 50 cents more an hour.

As you can see it takes a lot of effort to write a schedule and deal will payroll. The idea for my app is to cut this waisted time down by about 75%. All the manager has to do is plug into the app the time that the person is working and it will fill out the payroll portion for them. They will only have to write one schedule since it is digital and will be clean and neat the first time. The way they enter the shifts would be the way the are printed (10:30-7:30 OR 1030-730) and the app will take care of the rest. I can even keep track of the amount of people that are working a day and other important tracking aspects (how high payroll will be at the very beginning for example).

For now thats the general idea. I have never used NW.JS before nor have I done much with HTML5 and javascript. I will be learning as I go and keep track of everything here.

AWS: Cloud Formation

Diving into AWS head first with no real knowledge about well anything can be a real daunting task. Yet, here I find myself lost but not alone thanks to Youtube. I quickly watched a few videos and read a few blogs about the basics of AWS and was tasked with first launching a CloudFormation template that created a instance and allowed SSH with a key pair.

PS 6: Last problem set for CS149 @SJSU

Our instructions: 

  • The purpose of this assignment is to practice making multiple concurrent Linux I/O system calls in C, with a server process listening to multiple sockets and multiple clients communicating with the server process over the sockets.

    Server

    Create three sockets (local communication sockets), named as “CS149-Socket1”, “CS149-Socket2”, and “CS149-Socket3”. It must use the select() system call to determine whether any of the sockets has received connection request and/or any input data. The select() call is necessary so that request/data on any socket(s) can unblock the server. Once data is received from a socket, it first writes back to the client “received from socket ID:” , following by the content received. The “socket ID” should be replaced with the actual socket name (server socket name) from which the data is received. Then it should print out the same content on screen as well as to an output file “server-output.txt”. The server repeats the process of listening/reading/printing/writing with an infinite loop until terminated by user (via Control-C).

    Clients

    Create three client programs (namely Client 1, Client 2, and Client 3). Each client can start/terminate independently and should connect with the server via one of the three sockets created by the server respectively, i.e., Client 1 connects to socket “CS149-Socket1”, Client 2 connects to socket “CS149-Socket2”, and Client 3 connects to socket “CS149-Socket3”. Each client will ask user to type in a string and then write the string, appended by the client ID, to the corresponding socket. For example, if user input string to Client 1 is “CS149 class is great!”,

    then Client 1 should write the string “Client 1 user message: CS149 class is great!” to the socket “CS149-Socket1”. The client should also write the same string to a file “client1.txt”. Then the client should wait for the response from the server. Once the response is received, it should print out “Server response received:”, following by the content received. It also should write this to the output file “client1.txt” and repeat the process (waiting for user to input the next string, etc) until terminated by user (via Control-C).

    ————————————————————————————————————————————————

    Let the fun begin.

    Ok so first off this has to be coded in C. I haven’t coded in C for quite a while so time to do some reading.

    The professor added a number of src files that show which each individual thing does. That is he has the Client, Socket, and Server src files. I am guessing I am going to see how each portion works and build a program that has all 3 components….. In Java this would be easy since I know the language pretty well. Doing this in C though is going to take some time.

Major Coding Project: CS 151

Hotel Reservation System

By: Mike Bibb, Steven Leiker

For our major programming assignment this semester for CS 151 we had to design a hotel reservation system. The system has to have a login ui followed by the ability for a user to type in a check in date and a check out date followed by the type of room they want (an $80 room or $200). There are 20 rooms available so we have to keep track of how many have been reserved for the night and by whom. Then there is a manger view which shows a calendar. When a day is clicked a text view is shown that displays the available rooms for that day and the rooms that are booked for the night and by whom they are booked.

We started this a few days ago after having been assigned this project a good month ago. Nothing like a last minute rush to really get your ideas flowing.

As of right now 12/6/14 we are almost done. its 2am and we are calling it a night. This assignment is due in less then 24 hours and I work most of today. Going to get a little sleep so I can function at work and get back to the program. Hopefully the rest of it will be done quickly. We more or less just have to clean it up and write the documentation for it as well as some bug testing.

The rest of this will be written backwards as I try to remember these last few nights when we were coding into the early hours in the morning.

Blog 9: Delivering a project and presenting to a multi-level audience

Steve Jobs was one of the greatest presenters of our time. He could grasp an audience within his hand and have them feed off of his every word and then beg for more when he was finished.

The effect he had on the world is astonishing. He took a failing Apple(the company not the fruit) and turned it into one of the most profitable companies in the world. He revolutionized electronics with the Iphone, Ipod, and Ipad. He had a special gift that would make you need to by the latest tech that he was releasing. He had a gift to make people crave his key-notes. He had the ability to shake up the world with a presentation. If you want to be a great presenter yourself, look no further than understand what Jobs did.

Graham Rogers wrote about Steve Jobs presentations skills, “But how does Steve do it? In effect there is no secret: it is just hard work. There are other significant aspects, like preparation, rehearsal and criticism; and the well-worn ideas of planning, starting with a piece of paper. It may also be a surprise to many, but the slides are prepared last” The secret to Steve Jobs presentations is that he worked extremely hard at it. Everything he said everything he did on the stage was written out, rehearsed and then re-done if it didn’t carry the impact that he so wanted.

What to take away from this is that if you want to be a good presenter you need to work hard on your delivery. You must know your material extremely well so that when you speak it is smooth and concise. My last keynote that I went to the CEO of a company acted like he never even seen the words on the teleprompter. He stuttered and miss spoke many times having to constantly go back and correctly say what he meant to. This coming from the CEO is an embarrassment to his company. Do be that guy who doesn’t know his stuff and end up in someones blog down the road.

Another important idea is to know your audience. Know who you are speaking to so that you can frame your presentation around them.

To present to an audience and to do it well you must know your material. And furthermore you must know the audience you are presenting to. Knowing your audience and how to present to them is part of the hard work that you must work on. Know your material, know your audience, and rehearse your stuff until your eyes bleed out. My last thought on presenting is to be passionate about what you are speaking. The passion you feel about an idea or product will come out in your presentation and make it all the more exciting for the people in the audience. They can feel your excitement and they will feed off of it.

Images from:

http://specials-images.forbesimg.com/imageserve/0al9eD7eUWgly/0x600.jpg?fit=scale&background=000000

http://specials-images.forbesimg.com/imageserve/02Wb5oAgAkcpQ/0x600.jpg?fit=scale&background=000000

Rogers, G. (2009, December 9). Preparation is key to effective delivery. Bangkok Post. Retrieved November 25, 2014, from ftp://202.60.207.28/BP/2009/12 Dec/09122009/BK091209D03.pdf

Spence, E. (2013, October 19). Five Of The Greatest ‘One More Thing…’ Moments From Steve Jobs And Apple. Forbes.

Blog 8: Handing off a project to a client; what are the risks and challenges?

You think that by having completed coding on your project and finished bug testing you are done? Not so fast! The final task for your team is successfully handing the project over to the client. Sounds easy? It can be depending on the project. A simple app for a cell phone? Just upload it to a App store with a description and you are done. But for a larger project, one that is not going to be on a app store, things are going to get a little more tricky.

First and foremost, what are you going to hand over to the client? Are you going to send them every single thing you worked on? “The choice of what to do with production graphics is up to you. Some designers keep their original, editable versions of their graphics. Others hand over all the files.” (Karl, Sahlin).  The most important thing to understand is that whatever you send you should always keep a copy for yourself and that you should document for the client exactly what you are handing over and why.

The next hurdle you must cover when handing over a project is how much support are you going to give the client? Are you going to train them on your whole application? Chances are that the client might not know how to use your program so at the very least you will need some sort of documentation on its workings.

How is the client going to get the application or program anyway? Are you going to transfer it by a disc? is it going to be a direct download somewhere? Are you using a app store? If like in my teams case its a website Karl and Sahlin write, “ Best practice is to deliver the site itself to the client’s web server via FTP (File Transfer Protocol).” Although it may seem pretty basic you need to have a plan on how to send the completed project to your client.

There are probably countless issues you can have delivering a completed project to your client. To minimize any problems take extra care in creating your documents and action plans in the deliverables. This will save you a major headache in the end when all you probably want is to be done with it.

 

Images from:

http://www.hetek.hu/szabadido/201103/szemelyre_szabott_szakdolgozat_lusta_diakoknak

http://www.inkcinct.com.au/web-pages/cronological/2008-july-dec–cronological.htm

Sahlin, Doug, and David Karlins. Building Websites All-in-one for Dummies. 3rd ed. Hoboken, N.J.: Wiley, 2012. Print.


Blog 7: What five technical skills are employers seeking? What five soft skills put you on top?

Seeking employment is a competition that puts you against everyone else who could be possibly looking for the same job. So ask yourself, why would they hire me over the next person and you can’t answer with because my grandma says I am a special (I’ve tried, it doesn’t help).  There is no sure fire way to get any job. The only thing you can hope for is to know the technical skills required for the job you are seeking. If, like me, you are a CS major, you better know how to code and debug. However, unless you are some prodigy you are also going to need other skills to put your resume on the top of the hire pile. What are these magical skills that you so desperately need?

 

  1. Communication
  2. Team Work
  3. Critical Thinking
  4. Time Management
  5. Self Motivation/Drive

 

These skills are called “soft skills” which means they have to do with who you are more than what you know. For example I know how to code but can I work with other people to create an app? Could I even communicate what my code does? In today’s extremely competitive market knowing is not enough. You must be able to work within a team, within a company to get hired.

Starting from the top, Communication. This is probably one of the most important skills you could ever possibly have. OK, maybe not the MOST important but it is essential. Being a smooth talker can get you far in the world and can help you land a job that you may not have all the qualifications for. As a manager when an angry customer complains about something it is my ability to communicate thoughtfully and sincerely that  (hopefully) defuses the situation and lets the customer walk out satisfied. Think of it this way (for all the college students out there) did you learn more from the teachers that spoke well and fully articulated their subject OR from the teacher that could barely speak a sentence without getting lost?

When you work with a company you are working with a team. Whether that team is two people or a few hundred you are still part of something that is greater than you. Would you rather have a bunch of people who couldnt get along and work with eachother (take a look at Congress) or have a group who could get along and coperate? If you cant play nice then you need to learn how to fake it. Again that is unless you are some super talented god of whatever you want to do.

A important life skill in general( much like the rest but this one is sorely missing in society) you need to be able to think critically. That is you need to be able to see a problem and by using logic, deduction and along with a little research find a solution. When you get hired you are going to face many issues and it is going to be up to you to solve them youself. A company is going to want people who are able to think for themselves and not have to be hand fed.

Time Management is not something that I excell at. But it is a very important soft skill to have and one that employers are looking for. If they ( the employers) think it is going to take x amount of time to do anything and you are taking 2x to complete it then something is the matter. Either you dont have the required skills or you are spending too much time on the internet and not enough doing your project. Time Management is being able to see your tasks and plan them so that you can maximise your work with as little down time as possible.

Last but not least Self Motivation. A company is not going to want to higher someone who doesn’t do anything for themselves. When I am looking to hire someone or promote them I want someone who looks for task to do themselves and always stays ahead of what needs to be done. People who lag or people who I need to tell every five minutes to do something is not someone I am going to want to promote. On your resume you can easily show you are self motivated by putting down personal projects that you have completed and or attempted. If all you have ever done in programming is make a “hello world” program then you probably are not the motivated person that an employer is looking to hire.

There you have it, FIVE important skills you must(should) have to get hired in today’s job market. Of course this is by no means set in stone and not the only skills that you need to have but it is a good start. If anything I am a firm believer that these skills would at least make you a better person if you hold on to them and practice.

Images from:

http://www.improvizations.com/kronosblog/bid/91150/How-to-Track-Skills-and-Certifications-in-Workforce-Timekeeper

https://www.modernlifeblogs.com/2012/11/5-tips-to-maximize-your-leadership-skills/

http://www.beyond.com/articles/soft-skills-vs-hard-skills-what-are-retail-employers-looking-for–12548-article.html

Casserly, M. (n.d.). The 10 Skills That Will Get You Hired In 2013. Retrieved November 15, 2014, from http://www.forbes.com/sites/meghancasserly/2012/12/10/the-10-skills-that-will-get-you-a-job-in-2013/

Hansen, R., & Hansen, K. (n.d.). Top Skills and Values Employers Seek from Job-Seekers. Retrieved November 16, 2014, from http://www.quintcareers.com/job_skills_values.html

Mason, B. (n.d.). Careers | Top 10 Soft Skills in Demand | LiveCareer. Retrieved November 18, 2014, from http://www.livecareer.com/career-tips/career-advice/soft-skills-in-demand#.VHtmJDHF-rh

What are the top ten skills that employers want? (n.d.). Retrieved November 20, 2014, from http://www.kent.ac.uk/careers/sk/top-ten-skills.htm

Blog 6: My personal take on Agile

While doing many programming projects that where for school and personal learning I found myself getting lost in my code. Where some might say that’s good in that I am really diving in it; I found I was getting lost for all the wrong reasons. The key for me is to stay organized. On anything other than a simple code test I found myself doing a lot better when I wrote down my classes or jotted down some notes on what I wanted to do. I am no Bill gates or Mark Zuckerberg and so I need a little extra planning to get my code working. This plan can be of many different forms. I could be writing down my desired classes and making a UML diagram to piece together how it’s all going to fit. I could even simply write down what I need to happen and then break that down into methods. All I need is something that will help keep everything out of my brain and stuck in the physical world so that I can visually see my ideas.

Why is this important? Well more or less what writing down and staying organized for my personal needs is to me, Agile is to a team. Agile is all about organization and staying focused on the project and the dreaded deadlines. From my own in use classes I feel that our team is better equipped to handle our project once we started to use Agile. We force ourselves to meet up and talk about our project, throwing out ideas that we need to improve on. Before we might not have met up so much and have had as many discussions about a project. Before we used Agile we wouldn’t have been as organized as we are now mostly because with all the required documents and ideas for our project. Staying organized is not very easy with 5 random students who have already more work to do then hours in the day. But with Agile our projects have gotten easier and we have become more effective at completing our tasks.

That’s my personal take on using Agile these past weeks. With the Burn Down charts and the backlogs my team has been able to stay more focused on our target and more effective at getting our projects goals done. My personal favorite thing about Agile? User Stories. User Stories allow you (or at least me) to view a problem or a project need in a different light. It allows the developer to put themselves in other’s shoes to see what the project needs to accomplish. I love that. Everything is about perspective. And with User Stories we are better able to see what our end goal is with many different perspectives. This allows for a better product and a more complete project.

My thoughts when told I need to put more thought prior to starting projects

Images Courtesy of:

1) http://meta.stackexchange.com/questions/66753/what-software-development-methodology-was-used-to-develop-stack-overflow

2) https://allthingsmoralandphilosophical.wordpress.com/ (ps Thank you Bill Watterson)

Boehm, B. (2002). Get Ready for Agile Methods, with Care. 64-69. Retrieved October 15, 2014, from http://www.csis.pace.edu/~ctappert/cs615-02/boehm-2002-agile.pdf

Ambler, S., & Holitza, M. (2012). Agile For Dummies®, IBM Limited Edition. Hoboken, NJ 07030-5774: John Wiley & Sons.

Blog 5: LinkedIn profiles, how to use them, how to market yourself, how to network

In today’s world we have many ways to market ourselves to potential employers, investors, and clients. The important part to take from this is that we have complete control over how we are viewed by others. The Myspace (or Facebook) of the professional world is LinkedIn. Like the other social networks you are able to post a great deal of information about yourself. Unlike the others however, you don’t post how crazy you can get at parties or how much you can drink. You post your technical abilities, experience, and former jobs. It’s like an online resume that anyone can see (as long as your profile is public). The other great thing about LinkedIn is that you can be connected to other professionals in fields that you work or would like to work. This is actually amazingly powerful because it gives you an inside to a potential job. If you have questions about a specific job or want some information about a position you can follow a person who holds that position and be able to talk with them about it, as long are they are willing of course.

 With LinkedIn we are able to market ourselves, easier and more powerful than any time before. We are able to connect to people in a meaningful, professional way that will help your grow in your career. With LinkedIn we are in charge of who we connect with and how potential employers see us. To see how important LinkedIn can be here is an excerpt from a Forbes article, “To put a sharper point on it: If you don’t have a profile on LinkedIn, you’re nowhere. Partly motivated by the cheaper, faster recruiting he can do online, Campagnino plans to make as many as 40% of his hires in the next few years through social media….. e. If you’re serious about managing your career, the only social site that really matters is LinkedIn.”

From my personal use I have enjoyed a wide range of support from many people whom I cross in my daily life. Customers who I have known for years give me endorsements on LinkedIn all the time making my profile look better and better with each passing day. One or two might not mean a whole lot but with all the support I get from friends and colleagues it makes my profile look a great deal better. To a potential employer this could mean the difference between getting an interview and being passed over.

Images Courtesy of:

1) http://straightinfo.wordpress.com/2014/01/28/facebook-posts-can-ruin-your-chances-of-getting-your-next-job/

2) http://www.jobhuntingu.com/2014/01/29/3-stupid-mistakes-keep-getting-great-job/

Hempel, J. (2010, March 25). How LinkedIn will fire up your career. Forbes.