Thursday, May 15, 2014

Putting it all together: Synclis

It's been rough. We had our ups and down but we've managed to pull through! Although we weren't required to implement anything it was still a fun and enlightening experience. Working with clients was a sharp turn of events and I feel like even if I weren't going to pursue a career in software engineering, I feel like I can still apply the knowledge I gained to convey technical concepts in a simple manner. Like my use cases here. 



Although these use cases weren't actually used to explain everything, it helped me conceptualize everything that was going on. It's like what Albert Einstein said: You do not really understand something unless you can explain it to your grandmother. Except instead of my grandmother it was more like explaining it to myself. And I'm sure my grandmother can understand what I drew. It took me a while to come up with business listings, but when it was well-received when I proposed it. Unfortunately I didn't get a video of myself discussing it with my client. Even if I did it was probably unnecessary since based on what we discussed it was very similar to regular listings As shown here: 



And here's my business listing management:


I know, not very similar, but the core ideas are the same. As I mentioned before business listings and regular listings function similarly. The only real difference is that business listings lack an expiration date. Instead, they get a lease. Similar to other advertisements, businesses would pay for advertising space. 

After that it's a simple matter of creating cucumber features to ensure functionality. Here's an example of the above's:

Scenario: I want to create a business advertisement
Given that I am on the home page
When I click on "My Business Ads"
And I fill in "title" with "Elmo"
And I fill in "address" with "guild wars"
And I fill in "contact" with "sharpner"
And I fill in "description" with "brownies"
And I press "Create"

Then I should see "Elmo,guild wars,sharpner,brownies"

I chose arbitrary placeholder information for the sake of (my) simplicity. In effect, there would be other aspects that would need to be added such as uploading a video/pictures, deciding the the advertisement's category, and payment options. Because I wanted a bare-bones approach to this (as it is a prototype after all), I kept it simple.

So there we have it! Here's the link to my presentation. It's two part spanning around 23 minutes (sorry I couldn't make it shorter, guess I had a lot to say). 

Thursday, May 8, 2014

LoFi Diagram

Hey there!
So unfortunately I neither have any real LoFi diagrams nor a video of Chris and I conversing over them. Allow me to explain. Synclis, the website that Chris is currently working on, is already up and running (in open-beta). Earlier I helped Chris test the website and suggest any useful features. Although there were a few bugs, there many of the features that I suggested didn't necessarily have a place in website; however, there was one that did. Business listings. In an earlier conversation to find an area where I can contribute to the website, Chris mentioned that Amazon approached him with some promotional offers to advertise some of their items. From here it dawned on me that Synclis didn't have a feature that would allow to support such advertisements. It was then that I came up with the idea of business listings. Business listings are regular listings that, instead of expiring after a short period of time, would remain active until cancelled by the owner, an administrator, or if it's 'lease' on the website ran out. This 'lease', as I call it, is basically a payment made by the owner to the website to ensure that the listing remain active until the aforementioned conditions occur. There may be other associated features associated with business listings such as the ability to install promotional offers, but for now the lease is the main difference. Because a regular listing does not have a 'lease' feature, business listings were created in theory.

With all of that said, I held off on creating a LoFi diagram since it was already verbally designed at an earlier time. I'll try to get a video of Chris and I discussing it, but for now, I'll make do without it.

Now for a visual. Because regular listings and business listings are very similar in practice, I figured that the business listing management page would look similar to the regular one.

Your Listings management
As you can see, there is a feature installed on the website that allows personal listings to be edited, sought after, and deleted. In regards to business listings, the only addition that needs to be made is a  'lease' renewal. With that said, it seems a bit redundant to make a LoFi diagram of something that already has a solid foundation.

My Work Thus Far

My work thus far working with Synclis and Chris has been pretty rewarding. The keeping up with blogs and working with actual clients proved to be quite challenging but it makes a great stepping stone for work in the real world.

For my project presentation I plan on systematically going through all the assignments that we went through. For my introduction I'm not going to assume that the audience is fully aware of the objective of the class and start by explaining the class' purpose. I would then give a brief summary of the company that I was working with. And before going into the bulk of my project discussion I'm going to preface my presentation by saying that my project was slightly different from others in that I wasn't actually making an app or a website; rather I was attempting to find a useful addition that my project manager would want to implement. Starting from the activity diagram I would describe the work flow of the company as well as give a brief summary of the stake holders. From there I would present my Use Cases and the thought-process I went through in making them. After that I would examine some of the features I made and how they evolved throughout the course. Then I would start talking about the LoFi diagrams and about the suggesting that I pitched to Chris (business listings). And finally I'm going to showcase my HTML mock ups regarding that suggestion. To close the presentation, I plan on talking about the problems I faced and other improvements I wanted to make if I had more time. And lastly I would then talk about my future with Synclis and possibly my current career goals.

Here is the link to my slides.

Synclis: HTML Mockup1

Sorry for the wait but here it is.

The main objective of the mock-up is to provide a visual, more substantial alternative to hand-drawn Low Fidelity (LoFi) mock ups. Although the website has already been created, I used the opportunity to apply my vision of the site and apply any of my suggested improvements. Here's the link to actual website. And here's the Git Hub repository for my HTML mock ups

Here are some side by side comparisons starting with the homepage.

HTML Mock Up of Home page

Synclis Home page
It should be clear which is more appealing of the two just by looking at both of the home pages. I didn't add the various categories for a couple of reasons. The first is that I didn't actually find anything I wanted to improve as I went through the listing categories. I liked everything that I did see within the categories. It was well organized and neatly implemented. The other reason is that if I find any, I'm not quite sure where to begin to even start implementing any suggested improvements. The homepage serves as an index to all the other pages.

I wish I could show you some of the other features comparable features of the website but it seems that Chris, the client that I'm working with, has temporarily disabled the sign-in features so I'm unable to. With that said, here is the suggested addition that I pitched to Chris earlier: business advertisements. 

HTML mock up of "My Businesses"

The point of Synclis is to allow user-generated listings be advertised. Chris was recently approached by Amazon to advertise some of their items. It was as this point that I realized that websites like Synclis can be a lucrative stage to advertise businesses. The only problem was that Synclis' listings weren't particularly suitable for business advertisements. Regular listings expire shortly after their creation (about 40 days). It would prove to be quite a hassle for business managers to constantly post listings after they expire. With that said, I suggested a different kind of listing called a business listing which would be more of a permanent fixture on the website. Chris liked the idea and suggested that because business listings are more permanent that businesses must pay a fee to have it remain on the website. I called this action leasing. In the HTML mock up of "My Businesses", I created page that would manage such listings. As suggested by Chris, the page allows users to renew, edit, or delete existing business listings and create new ones. 

Here's what it looks like when I edit a business listing:

HTML mock up "Edit Business Listing"

The features I offer here are very straightforward. It allows users to look at the old entries while completing a form to make a new listing. I intended to have an area where all media related to the business listing would appear but I never got around to implementing it. So far, Chris' response has been largely positive. Since he is the designer he will get the final call as to what it would look like.

The next step now would be trying to figure how these listings would be advertised. Would they appear as regular advertisements throughout the website, will the business listings have it's own area completely separate from regular listings, or would they appear as regular listings but have a tag that identifies it as a business listing?

I'll keep you posted.



Thursday, March 27, 2014

Activity Diagram with Interview Notes

Love them or hate them, interviews are a necessary step in establishing business relationships. It's an opportunity for both parties to get to know each other and have their intentions laid out. The setting of the interview takes place on Skype.

After giving it some thought, here's a list of things that I would start out asking:

Preliminary questions:
- In a nutshell, what does your company do?
Company takes requests from customers. After negotiations, costs, deadlines, and work are partitioned among teams to work on. After creating product, product will undergo testing by Quality Assurance team and be available for free to suggested customers. Once approved, product will go into beta after which the customer will ask to fine-tune certain aspects.



- Who are the various stakeholders within the company? Can I eventually meet them?
In addition to manager, there’s the development team, project manager who oversees and handle managerial duties over project, a person to handle marketing and operations, and another who handles finances.

“Our marketer is developing strategies, particularly social media "Do it yourself" methods, and looking to reach a certain amount of recurring / residual users before looking into funding through crowdsourcing”

“On the business side of things,
he's looking for negotiations beforehand and speaking to realty agencies, retail stores, and a few more notable names in the university to get a few listings populated into the server.
Since he's also doing finance, he's looking at the net revenue from all of the income sources for the website, including monetizing, personal advertising, and promotional items we are looking to sell.
On top of that he's managing our budget, since we're planning to purchase marketing services from Google / facebook, and a few sketchy local marketing agencies.”



- How well do you think I will fit into the company? Would I need to read up on a lot of terminology or expand my knowledge in a particular field (say, GUI's or interfaces for example)?
Need to learn Javascript, HTML, and CSS (not required) as well as their associated API

Need to learn JSON strings, and JQUERY











After getting to know a thing or two about the company, I would start asking more specific aspects of company operations like:

- For the typical client, how long does it take to complete their requests?
~1.5-2 months

- In terms of resources (employees, cost, time, taking on multiple projects, etc) how much does the company invest in a single project?
Really depends on the type of project. The money they receive from contractor is used to invest in the project.

“We invest in time vs. employees needed with a budget given, and we try to maximize the amount earned. So for example if we have a 20,000 project that will take 2 months
and we have to pay employees 2000 / mo. 2 employees for a 2 month project is already 8k
12k profit received.”



- What are the various teams that the company employ to complete the tasks at hand?
This question and next two are answered by this google doc

- Is the client informed of each and every step in progress?
contracting gig, no unless arranged. Employment gigs- yes

- How is testing done? Do the developers test as they go along or is there a separate team that tests  the finished product?
there is a test team, there is software that reports live test errors and where testers can assign a part of the development team to work on them. Software used is redmine

- What will I be specifically working on?
Project will be tailored to my interests (networking, security, databases). Since I’m using this to work on a different class project, only the networking side will be able to fulfill the requirements for both classes.

“What you're going to help us do is use API's from other services (very network / javascript heavy) and integrate them into our system by sending them back to our API's.”

These are the steps:
Learn Javascript, HTML

Learn networking + JS

API calls + Social Media

Rails prototyping

Data collection

Activity Diagram for website development:




This is activity diagram typifies the process of the work flow. Although I did leave out a couple stakeholders (the advertiser and financial manager) their involvement with the company do not dictate how requests are handled. Everything starts with the customer. Once the customer and manager negotiate a deal, the request is handed to the project manager who then partitions the work load. After that, a team of engineers and developers begin their work. Once it's done, the project is handed off to the project manager and manager for approval. If the product meets their expectations and the specifications, the product is either released into open beta or given to the customer.

My Use Case Diagrams



Getting right down to it, use case diagrams are used to visually demonstrate how a system is (supposed) to work. While there may be some ideas that will change over the course of a project development, the core idea will usually stay intact. Incredibly useful when trying to explain the functionality of systems to non-programmers without having to delve into the guts of coding and technical terminology.








Use Case 1 - Post Listing

This diagram is used to describe the scenario in which the client (website user) wishes to create a new listing on the Synclis website.

  • Log in: User enters relevant credentials
  • Create new listing: This is the process in which the user collects information regarding the listing. This can range from pictures, product quality, etc. An expiration date is set and a price is listed if relevant.
  • The listing is posted onto the website. Afterwards, the author should have the option to edit the listing














Use case 2 - View/accept listing

This diagram is used to describe the event where a user wanted to look up the various available listings and accept them.

  • User logs in with relevant credentials
  • Selects a category they wish to browse. Alternatively, they can try searching for what they want to see using the search engine
  • After getting a list of listings, the user can browse them at his or her leisure. The presentation of the listings is still (as far as I know) undecided
  • Selecting on a listing yields additional information on said listing
  • Accepting will notify the author of the listing and allow the two users to communicate







Use case 3 - Pulling information from social media website using JSON

This diagram is used to illustrate how information from other websites can be pulled onto Synclis. I’m using YouTube as an example

  • Video is created on host website, YouTube, by users
  • Synclis and YouTube communicate over the network via HTTP callbacks
  • after getting okay, Synclis converts relevant information using JSON
  • Information contained in JSON will then be used to post the listings. The listings will subsequently be categorized and display the author and video information

Friday, March 7, 2014

Interview Notes

Love them or hate them, interviews are a necessary step in establishing business relationships. It's an opportunity for both parties to get to know each other and have their intentions laid out. The setting of the interview takes place on Skype

After giving it some thought, here's a list of things that I would start out asking:

Preliminary questions:
- In a nutshell, what does your company do?
Company takes requests from customers. After negotiations, costs, deadlines, and work are partitioned among teams to work on. After creating product, product will undergo testing by Quality Assurance team and be available for free to suggested customers. Once approved, product will go into beta after which the customer will ask to fine-tune certain aspects.



- Who are the various stakeholders within the company? Can I eventually meet them?
In addition to manager, there’s the development team, project manager who oversees and handle managerial duties over project, a person to handle marketing and operations, and another who handles finances.

“Our marketer is developing strategies, particularly social media "Do it yourself" methods, and looking to reach a certain amount of recurring / residual users before looking into funding through crowdsourcing”

“On the business side of things,
he's looking for negotiations beforehand and speaking to realty agencies, retail stores, and a few more notable names in the university to get a few listings populated into the server.
Since he's also doing finance, he's looking at the net revenue from all of the income sources for the website, including monetizing, personal advertising, and promotional items we are looking to sell.
On top of that he's managing our budget, since we're planning to purchase marketing services from Google / facebook, and a few sketchy local marketing agencies.”



- How well do you think I will fit into the company? Would I need to read up on a lot of terminology or expand my knowledge in a particular field (say, GUI's or interfaces for example)?
Need to learn Javascript, HTML, and CSS (not required) as well as their associated API

Need to learn JSON strings, and JQUERY











After getting to know a thing or two about the company, I would start asking more specific aspects of company operations like:

- For the typical client, how long does it take to complete their requests?
~1.5-2 months

- In terms of resources (employees, cost, time, taking on multiple projects, etc) how much does the company invest in a single project?
Really depends on the type of project. The money they receive from contractor is used to invest in the project.

“We invest in time vs. employees needed with a budget given, and we try to maximize the amount earned. So for example if we have a 20,000 project that will take 2 months
and we have to pay employees 2000 / mo. 2 employees for a 2 month project is already 8k
12k profit received.”



- What are the various teams that the company employ to complete the tasks at hand?
This question and next two are answered by this google doc

- Is the client informed of each and every step in progress?
contracting gig, no unless arranged. Employment gigs- yes

- How is testing done? Do the developers test as they go along or is there a separate team that tests  the finished product?
there is a test team, there is software that reports live test errors and where testers can assign a part of the development team to work on them. Software used is redmine

- What will I be specifically working on?
Project will be tailored to my interests (networking, security, databases). Since I’m using this to work on a different class project, only the networking side will be able to fulfill the requirements for both classes.

“What you're going to help us do is use API's from other services (very network / javascript heavy) and integrate them into our system by sending them back to our API's.”

These are the steps:
Learn Javascript, HTML

Learn networking + JS

API calls + Social Media

Rails prototyping

Data collection

Activity Diagram for website development:

Interview Blog - Draft

Love them or hate them, interviews are a necessary step in establishing business relationships. It's an opportunity for both parties to get to know each other and have their intentions laid out.

After giving it some thought, here's a list of things that I would start out asking:

Preliminary questions:
- In a nutshell, what does your company do?
- Who are the various stakeholders within the company? Can I eventually meet them?
- How well do you think I will fit into the company? Would I need to read up on a lot of terminology or expand my knowledge in a particular field (say, GUI's or interfaces for example)?

After getting to know a thing or two about the company, I would start asking more specific aspects of company operations like:
- For the typical client, how long does it take to complete their requests?
- How much does does the company typically spend on a single project?
- What are the various teams that the company employ to complete the tasks at hand?
- Is the client informed of each and every step in progress?
- How is testing done? Do the developers test as they go along or is there a separate team that tests   the finished product?
- When it comes to development, what problems do you normally encounter?
- Is there anything that you feel needs to be improved?


After asking these questions, I would probably start asking some of the questions that I may have throughout the interview


Thursday, February 20, 2014

My Draft For Approaching An Organization

This blog will be a draft of the conversation I had with the start-up organization, Mu Beta Solutions. Earlier I went ahead and contacted the co-owner, Chris Makoto, and was invited to join him on one of his personal projects. As of right now, any project work involving Mu Beta Solutions is still pending as they're hard pressed to meet deadlines - as is the nature of start-up businesses. For more information about the personal project, skip below the draft.


=======================================================================
1. Introduce myself as a HPU student and succinctly say that I would like to assist their organization as part of a couple class projects (I have to do a similar project with another class so I was hoping to hit two birds with one stone by having both classes focus on the same project).


2. Briefly highlight the objectives of my two projects Our class, software engineering will mainly focus around creating functioning software that will be beneficial to the organization. Since the company focuses around creating software for other organizations, participating in some of their projects will help me understand the thought-process that goes into software development. My second project focuses around the 'sustainability' of the organization. Being a start-up business, I believe that investing in students, such as myself and others in the class, will help the company stay afloat in the long run.


3. Say that you understand that their company is still new and they may neither have the time nor the resources to accommodate me or my fellow students. Also say that while I'm not looking for pay, I am looking for on-hand experience to essentially learn-the-ropes of being a professional programmer.


4. Mention my [meager] skill set and interests. My most best programming languages are Java and C++ and I am quite familiar with Python, Ruby, and Basic. My interests include networking and security.

5. Thank the person (Chris) for their time and include my contact information

=======================================================================

Needless to say, I was told that I can help Chris with one his personal projects. The project has no affiliation with Mu Beta Solutions (as of right now anyways). From Chris himself, this is currently what the current project entails:

"I would like you to help me with integrating social media into my project, and we can see if we can get something to where we can observe user behavior and use graph theory analysis to see if we can see any trends. Trends such as little communities, see if one users actions resonates towards other users. And use this information to help further build the social media within the system itself."

Basically what he plans to have me do is help him gather data from various social media websites such as Facebook and Twitter to create a website in which users index their content to receive help from other users. He described it as something akin to craigslist.


As mentioned before, an official position in Mu Beta will still be question until their schedule becomes less volatile. I am told that I would know more about their situation in a week from now.






Thursday, February 13, 2014

Mu Beta Solutions

After asking a friend if he knew of any non-profit organizations that may need some help with software, to my surprise he had me talk to an acquaintance of mine in my sophomore year, Chris Makoto. Chris Makoto is a co-owner of a start up company called MuBeta Solutions. From what I understand, the company offers software services to various other companies around the island. Because his company is relatively new, he's planning on screening interns in a couple months. While I don't meet the qualifications, he did offer me a place to learn the ropes of being a programmer (so I suppose a student intern). After speaking to him about it he is willing to extend his offer to other interested students of the software engineering class. While nothing is set in stone at the moment, I expect to hear a response within the coming week.