Final blog

Today will be my final blog on this site as I go over what I am hoping my project will be.

This blog will also serve as the first draft of my final assignment so here goes:

For me, computer hardware was what first got me into IT, more specifically the first time I built my own computer. Unfortunately, during this time, I did not know anyone who had any great level of knowledge in IT and as such made some beginner mistakes with a choice of components. Granted these mistakes weren’t major, but at the same time, I spent a large amount of time and money fixing issues that could have been avoided in the first place. It, therefore, saddens me when I see others who have made the same mistake.

So with that in mind, this project will be to develop a web-based application for the use of first-time computer builders and/or returning builders who wish to get a rough outline of what they should be buying to make the most out of their money.

Provided all goes well it will give new system builders or thoughts not confident in their own decisions yet the chance to avoid such pitfalls while also learning why the recommended components would suit their needs better.

This project will probably require many of the tools I have talked about in my previous blog entries so I am glad I took the time to look into them, even if I will have to look in more depth later on.

I am looking to get this approved soon, and if so work on it during the upcoming semester.

As a final note, before I sign off, I would just like to thank both Clare and Belma for teaching this class. I have had a great time in it, much more than I had initially expected and for that, I thank you both.

RJ Day 13: Web API’s

Today I will be talking about the less morally grey counterpart of web scraping called API’s.

API’s, otherwise known as Application Programming Interface, are gateways set up by the developers of others systems that allow external 3rd party systems to access and use certain data from the 1st party systems. This can allow 1st party systems to gain additional functionality that the 1st party developers would never have time to develop or allow users to access the same data through alternative methods.

However, this available information or functionality is often filtered to only what the 1st party developer wants to share, this is normally done for security purposes but can also be done to ensure 3rd party developers do not have an easy time copying or replacing their systems.

For example, the FaceBook Messenger API does not allow its 3rd party developers access to the messaging service itself, only instead access to certain subsystems which allow the 3rd party system to add information on to the existing service. In this scenario it makes the FBM API act as more of a plugin system than a real API.

3rd party developers often have very mixed feelings about API’s. Should the first party company have a good upkeep on the API then these developers are often happy, but unfortunately, this is not always the case. Some 1st party developers provided very little upkeep to their API’s which are often left outdated rather quickly with slow updates and fixes. This will often leave 3rd party applications broken, which leads to annoyed users, which leads to annoyed developers.

On the plus side, a well updated API can provide a much more seamless system and allow for developers of a much lower skill level to bring their ideas to life much more easily. Additionally, even with Web scrapping being a viable alternative for some situations, API’s can provide much more consistent functionality, without any of the morally questionable situations web scraping can put a developer in.

For example, the operating system Android allows developers access to a sharing API, this means any developer who uses it can then give their app the ability to share content with other supporting apps. I.E Share a picture from my camera with someone through Email or even upload it to the cloud.

API’s come in many different flavours which are as follows:

  • Libraries and Frameworks
  • Remote API
  • Web API
  • Operating systems

To me and my project, the most important of these will be the use of web API’s which will normally use the universal languages of XML or JSON for data transfer and (at least as of current) the use of the REST (representational state transfer) style.

If all goes to plan with my project, I will be using one such API for the development of my system, it is my hope that I can use this to gather the required information for processing in my system. If this is not the case then I will have to fall back on last weeks topic of Web scraping as a backup.

I have one more blog to write before the end of my course. So stick around till then as I tie all this together into my final project.

RJ Day 12: Web Scraping

As part of my little mini-series of blogs towards my next semester project, today I will be looking into Web scraping, a technology I will probably need to use during the construction of my project.

Web scraping is an interesting topic of conversation for anyone in web design, this is due to the rather grey coverage of what scraping does. What exactly is this, well a web scraper is an application or command line tool which can go to a website and download either the entire site or specific components of it into a much more user or machine readable form. This data can then be used in other applications or kept in storage.

Where web scraping runs into the debate is with the scraping of copyrighted content, technically speaking making copies of such data may incur a copyright breach. The debate counters that the use of some site data is not considered to be copyrighted material, this is especially true for sites such as online stores where the products they list (more specifically the data about them) are not technically under any form of copyright restriction for use.

As of current web scraping as technology is considered fall under the same situation as Torrenting (a form of pear to pear downloading which is unfortunately famous for illegal downloads and virus’s) is. While the technology itself isn’t illegal, it is considered grey and those that use it for malicious purposes will be prosecuted.

So with the scary stuff out the way, let’s look at the benefits of web scraping.

  1. Web scraping provides a way for entire websites to be preserved into archives like WayBack Machine (https://web.archive.org/), a site that anyone can use to see what a site looked like as far back as 1996.
  2. For sites that provide a lacklustre API or no API at all, web scraping can be used to interface with the site without restriction.

For my project, I may have to look at using a web scrapper for the former of the above two options. Luckily for me, the sites I am looking at scrapping do not contain any copyrighted content as they are both web stores so hopefully, all is a go.

Ok so with that sorted, how do we go about web scraping.

Well, the most simple (yet hardest) is to do it through manual copy and paste, this can be done by anyone by going through the site page by page and copying the source code, understandably this is slow and very quickly becomes impractical as the site grows but it is reliable, free and can get around barriers put in place to prevent scraping.

Since the manual way is slow some clever people have managed to make automatic systems which can go through a site and save the data in extremely short periods of time. You can even get Google Chrome browser extensions like Web Scraper (http://webscraper.io/)

As of now, I am not sure how exactly I will use scraping if I require it, however, I can say I will not be doing it the manual way.

So I have one final part to my mini-series before the finale. Stay tuned for next week’s blog to find out. Cheers for reading.

RJ Day 11: Logic tree’s

For my end of year project, I am looking to include a logic tree for taking a users input and processing it to form an output which will suit the user based on their choices.

This can also be worked in with the technology from my previous blog Electron in my final build.

But Electron was the last blog, so let’s talk about logic trees. Logic trees (also known as decision trees) can be used almost anywhere to model the behaviour of users in a system. For coders, decision trees are used to get more accurate output from a given system through the use of collected data.

(Interesting side note: This can be especially interesting as a decision tree could be employed in the planning of an app which uses decision trees to provide answers.)

Decision trees attempt to best as possible model real world decisions. However, some corners must be cut, as not all possible choices can always be modelled. This is due to the immense number of possible options that could be picked in a real world sense. Logic trees in this scenario will attempt to cover as many possible bases as they can while remaining inside the possibilities of the code.

As you can imagine logic trees can grow very big very fast and it is for this reason that most designers will look to keep their trees as simple as possible. One such way to do this is to ask common questions near the start of the tree so all paths can share the following questions. Once common questions have been exhausted the tree can split off into the non-common questions.

If no common questions exist and/or path sharing is not possible the choice must be made on if all the questions are required, however it should be noted that if path sharing is used, these questions may not be required either.

In coding logic trees are often done with a series of “if” and “elseif” statements. For example:

If answer = green then

If answer2 = round then

Something here

ElseIf answer 2 = square then

SomethingElse here

ElseIf answer = red then

etc

In a diagram form this would be represented like such:

Capture.JPG

Now you might be thinking, why on earth did this guy feel the need to write a blog on something so simple. Well, the truth of the matter is I had completely forgotten how logic trees were coded and thought they were much more difficult they are. Derp to me. But also I wanted to a refresher on how logic trees opperate to see if there were any better solutions available inside PHP.

Unfortunately, at this time, I could not find any other solutions that would fit the requirements of my project, and as such I decided that the best way to jog my memory (and provide a nice place for me to come back to should I forget again) was to write up a blog about it.

See you next time.

RJ 10: Web wrapping with Electron

As part WEB701 and SDV701 I will be using the Electron software framework, I also have a great interest in this field and may look to include it in my final project. For this reason, I have decided to make the Electron framework my research journal blog for this week.

First off, what is Electron? Previously known as Atom shell and released in 2013, Electron is an open source framework developed by the clever fellows over in GitHub, which allows for the rapid development of highly compatible desktop applications using more widely compatible and known web technologies.

Built on a Node.js back end and Chromium (Google Chrome) front end allows for almost unlimited compatibility between devices while employing the use of the popular Javascript coding language for its base.

Ok so that’s all well and good but what does that mean for us. Well, there are three key ways to use Electron. Components of which can easily be mixed and matched.

  1. Full desktop: In this mode, the application is completely built for use on a client computer and can be used in a number of ways, interestingly enough despite utilizing web technologies such as HTML and CSS for the construction of the app (if the user decides to use such languages) it would not necessarily require an internet connection to operate. Of course, the primary use for such an app would normally be to interface with some online service, but at least in this mode the app could still retain some level of functionality or at bare minimum inform the user of their lack of internet connection.
  2. Full online: So you’ve decided you don’t like a certain site or you just really like the idea of turning youtube into its own app for your home screen. Well, guess what you’re in luck. In full online mode, the app acts only as a minimalistic web browser that only works for the site specified(or you could just nullify the point completely and just send it to Google).
  3. While option one is perfectly valid and widely used in the Electron community, option two only really seems to have point when combined with its predecessor. In this mode, the website is specifically designed with it being turned into a mobile app in mind, while the app itself utilizes extra features that may not be so readily available in an online environment such as file saving. This means that users can go to the website and try out whatever it is the site is about, but then download the app if they like what they try to gain the extra functionality.

It is the latter of the three that I am looking to create for my projects.

So now that you know in what ways Electron operates let’s have a look at some of its key features.

  1. Compatibility: Electron boasts (and rightfully so) that its apps will be compatible with all three of the major Operating System players, Windows, OSX, and Linux with zero effort on behalf of the developer, this is due to the compatible web technologies and some Electron magic.
  2. Inbuilt updater: One of the biggest issues for Desktop apps is pushing out updates to your users. Luckily Electron has you cover here as well, so long as your project is in GitHub (oh how convenient that they also make that) updates can be automatically pushed out to users as they are released
  3. Menus and UI: Because not everything can port over nicely from the web, Electron includes a decent array of menus and other such UI elements to help your desktop app feel more like one and less like a ported web client.
  4. Installers: While OSX and Linux installers are not quite there yet (at least from Electrons dev team) Electron does support the creation of Windows installers making everyone’s life easier.

With all of this in mind, let’s have a look at an example.

Discord is a free to use voice and text chat client that works on all manner of platforms. It also happens to be built in Electron.

Looking at a comparison between the desktop app and website it’s easy to see the similarities.

Capture

Both the desktop and web variants of Discord work very similar, however, the web site does lack certain features which can only be used in the desktop version due to web limitation.

So you’ve seen what Electron can do and want to give it a crack, well luckily enough it’s pretty simple to get started with Electron. I’d recommend checking out the Electron demo and/or giving the following video a watch.

Electron demo:

https://electron-api-demos.githubapp.com/updates/ElectronAPIDemosSetup.exe

First Electron:

I’m sure you can understand now why I’m so keen to use this technology in my projects. Hope you have enjoyed learning about Electron as much as I have.

RJ Day 9: Acidemic paper analysis

For today’s class, Clare has asked us to perform an analysis. Here are the results of such:

The main components of an academic paper are:

Hand-held internet tablets for school-based data collection

Host URL: https://bmcresnotes.biomedcentral.com/articles/10.1186/1756-0500-1-52

  • Did the abstract tell you the three things I said it should? If not, what did it tell you? (NB If your paper doesn’t have an abstract, it is not an academic research paper!!! Go and find another one!)
    • Yes. The abstract clearly mentions that the article is about how laptops or tablets affect survey styles. That the authors used test surveys using the different devices and then monitored the results. And finally that the students mostly showed a preference for tablets.
  • What seems to be the research question(s) they were trying to answer?
    • How electronic devices affect the collection of data
  • What  method(s) did they use to answer the question(s)
    • They did test questionnaires on students using tablet computers and laptops and then compared the results between the two.
  • How credible do you think the paper is? (hint: look at who authors are and where and when it is published also compare what they were asking with what they did)
    • The publisher of the article is BioMed Central (BMC) who has published a large number of academic articles under the peer review system which already gives the article some credibility. Additionally, the research for the article was completed by several high standing researchers in Auckland. Several of have completed academic articles on previous occasions.
  • Did you agree, or not, with what they wrote in their conclusion? Why?
    • I do agree with the conclusion, while the results for this are found, I agree that further research should be completed in additional locations to further broaden the results. I also agree that mobile devices make much more sense to complete such surveys on as they provide a more private environment for completing such surveys and allow for much easier collation of the data into useable information.
  • Briefly, describe two things that you learned from the paper.
    • Tablets and laptops provide much more accurate results than paper questionnaires.
    • Tablets provide a more private setting than laptops but are not considered any more preferably by students then laptops.

Denny, S. J., Milfont, T. L., Utter, J., Robinson, E. M., Ameratunga, S. N., Merry, S. N., … & Watson, P. D. (2008). Hand-held internet tablets for school-based data collection. BMC Research Notes, 1(1), 52.

RJ Day 8: English(or the one in which I disagree with David)

Now before I start, I must draw your attention to one of my classmate’s blog posts which can be found here: https://davidsresearchblog.wordpress.com/2017/03/16/week-3/

This blog post, while great in principle, has one thing that I could not disagree more with and for that, we must look at an excerpt from his blog. Now before I hear you whining about going and reading the whole thing (cause I know most some of you didn’t) I have copied the important bit here for you.

Now, lets change the metaphor – an argument is a dance. Suddenly entirely different imagery is conjured up. It takes two to tango, a dance requires collaboration between two people in order to successfully dance. A dance is inherently more positive, and the intended outcome is not one winner, one loser as the argument is war dictates, but rather that both people come out equally, having successfully cooperated and reached a compromise or resolution.

So after reading this, you are probably thinking, “Why is this an issue? he has a valid argument? what could you possibly nitpick out of this?” In short, arguments are not dances.

But first, let’s back up a bit. The English language is complex and difficult to learn (though certainly not the worst offender) at the best of times, earning a reputation for being particularly bad when it comes to repeating words with different meanings, having words that sound the same but are written differently and having some of the strangest punctuation rules. With these in mind its easy to understand why some people have difficulty learning to understand English, let alone speak, write or read it. Now don’t get me wrong, the core components of English are relatively easy, however, it’s when we get into specifics that stuff gets interesting.

So how does this relate to dancing? Well as David says in his blog “argument is a dance” is a metaphor (something which definitely falls into the more difficult of English components) and on that level, I can’t fault the sentence, it’s a totally valid metaphor, saying one thing is like another without using like or as. But this blog isn’t about whether the metaphor is valid it’s why the metaphor makes no sense.

Let’s think about if for a second, when I say to you that someone is having an argument, what is the first thing that pops into your head. I bet it was two people having a negative disagreement over something, potentially some yelling, angry faces, the whole nine yards.

But let’s change the keyword, what if I said someone was having debate or discussion. Now the same situation feels much lighter and more friendly and in the case of the debate, feels structured or planned.

In fact, we could even consider such words to have internal unwritten metaphors, which add a predetermined feeling to the word. Or if you want a more real word term, these words are called Synonyms, words that have the same definition but with different feel.

A debate, in my opinion, would have such internal metaphors as, structured and intense while discussion would have friendly and calm. Now, these may differ for you, so in this case, we can use written metaphors to define exactly what we are talking about within the words scope. I.E It was an intense debate.Untitled.png

And this is where I disagree with David’s metaphor, an argument has no need to be a dance because the English language already has many words with the same meaning, but with a more accurate feel for them. An argument as a dance (in my opinion) places the word well outside of its effective scope and makes for a confusing contradiction. So instead of making the English language more confusing with arguments of dance, how about we simply have a debate.

So in short, instead of making the English language more confusing with arguments of dance, how about we simply have a discussion.