Snapshot 1

The contents of this page outline the work I have completed on a weekly basis regarding the DECO3801 group project. It outlines my work, in addition to my feelings and concerns of the project over time. Each journal is written on a weekly basis. Please go to my website danielCiccC.github.io for a styled and complete running list of my journals.

Week 1 journal

Week 2 journal

Week 3 journal

We will be using jira to manage our tasks, and confluence any large documentation. It will be my responsibility to manage upcoming work and build jira's to manage to workflow of the developers. This is the current jira workstation

Alt text

Statement of work

Fortunately, the technologies we needed to implement were quite straightforward. As the project brief asked for a Large Language Model (LLM) be implemented to remove bias from news articles. This made the backend relatively simple to choose - only python has strong support with existing LLM's, and Darren's strong aptitude with React/node.js can be used to build our user interface.

Our hurdles immediately ahead of our are understanding what we need to develop as part of our statement of work, and putting pen to paper to write down all of our design elements for this project. We have had several discussions already about what elements and features we choose to incorporate into our design, and whether we want to introduce AR (augmented reality) into the design as well (as it was labelled a potential feature to include). So far, we have plans to deliver three phases in our build:

  1. Outline all the biased keywords in the text, and explain why they are biased. Build UI to support this feature
  2. Develop a bias score (which will be a propeitary mix of different subversion techniques) which will outline how biased the news article is based on a variety of subversion techniques
  3. use search engine optimisation and google search to find similar and other relevant articles, and compare them to the one inputted in. Use this to compare the scores of related articles. In addition to this, summarise the key facts from the variety of sources inputted in.

There has still been some debate as to whether we should incorporate AR into our build. I will have a meeting with Yash and Sean to discuss this further, as they are soon to complete more interviews and testing.

Yash has begun developing our statement of work on google drive and Sean has begun work on developing wireframes to outline our build, although I don't believe this will be ready in time for our statement of work.

Week 4 Journal

Almost immediately after submitting our Statement of work, I had another conversation with Yash and Sean about the phases of our build, and the insights they have drawn from interviews and surveys. Sean urged (and convinced us) to pivot our existing phases to instead aim to create a site that can summarise out key facts from the article in the initial phase of our build, instead of finding keywords in text. All in all, this would mean re-arranging the phases our build plus addiing some additional functionality earlier on the phases of our build.

Our wireframe plans to date

Week 5 Journal

Week 6 Journal

Our most up to date wireframe, outlining poltiical figure websites

An example image:

Alt text

Week 7 journal

Greatest contribution this week - Data management organisation

(NEED TO ELBAORATE THIS FURTHER)

''' ID NameCode VARCHAR(255) NOT NULL UNIQUE, InProduction BOOLEAN, InsertedAt DATETIME, InsertedBy VARCHAR(50) ''' class Politician_PositionNameCodes(table): def __init__(self, nameCode=str, inProduction=bool): super().__init__() self.nameCode = nameCode self.inProd = inProduction self.name = Politician_PositionNameCodes.__name__ def __str__(self): if self.id is None: return f'{self.name} Record has not been inserted into DB - ID is NONE' else: return f'{self.name}[{self.id}, {self.nameCode}, {self.inProd}]' ''' This insert statement only takes one parameter; the name of the user inserting the record. ''' def insertSQL(self, insertedBy) -> str: query = f""" INSERT INTO {self.name} (NameCode, InProduction, InsertedAt, InsertedBy) VALUES ( '{self.nameCode}', {1 if self.inProd else 0}, NOW(), '{insertedBy}' ); """ return query def getName(self): return self.name
[2023-10-04 11:24:14.489746] [Daniel Ciccotosto-Camp] [SUCCESS] [Established connection <pymysql.connections.Connection object at 0x000001483AF162D0>] [2023-10-04 11:24:14.491739] [Daniel Ciccotosto-Camp] [SUCCESS] [Established cursor <pymysql.cursors.DictCursor object at 0x000001483ADE1110>] [2023-10-04 11:24:14.950751] [Daniel Ciccotosto-Camp] [SUCCESS] [Established connection to database newscuration] [2023-10-04 11:24:15.442174] [Daniel Ciccotosto-Camp] [SUCCESS] [Successfully attempted query: SELECT * FROM Politician_PositionNameCodes WHERE 1=1 ] [{'ID': 1, 'NameCode': 'Prime Minister of Australia', 'InProduction': 0, 'InsertedAt': datetime.datetime(2023, 9, 28, 8, 2, 3), 'InsertedBy': 'Daniel Ciccotosto-Camp'}] [2023-10-04 11:24:15.444174] [Daniel Ciccotosto-Camp] [SUCCESS] [Closing Connection <pymysql.connections.Connection object at 0x000001483AF162D0>] [2023-10-04 11:24:15.445176] [Daniel Ciccotosto-Camp] [SUCCESS] [Closing cursor <pymysql.cursors.DictCursor object at 0x000001483ADE1110>]

Week 8 Journal

Each jira maintains three parts:

  1. Context: what has been going on in the background? What has been developed up to this stage and what phase of work are we currently building?
  2. Requirements: what has to be developed in this piece of work?
  3. Success Criteria: what is an acceptable output/change that will see that this work has been developed?
  4. Images: (for reference only)

The following three images are screenshotted from jira PRO-72: Phase 4 API routes.

Alt text Alt text Alt text

Week 9 Journal

Issues:

Week 10 Journal

Alt text Alt text

''' Returns: ID int, Fname : str, Lname : str, About : str, Age : int, Gender : str, CountryCode : str, InProduction : Boolean, InsertedAt : DATETIME, InsertedBy : str, ImageLink : str, Summary : str, Articles : [ {ID : int URL : str, UpperBias : float, LowerBias : float, Summary TEXT, InProduction : bool, InsertedAt : DATETIME, InsertedBy : str Header : str, OriginalText : str, SummaryParagraph : str}, ] ''' @app.route('/GetPoliticianByID', methods=['POST']) def politicianRequestByID(): data = request.get_json() id = data.get('id') return sm.getPoliticianItem(id, None)