California Investment Network


Recent Blog


Pitching Help Desk


Testimonials

"I'm very impressed with the level of professionalism of this network. I registered my request over three months now, and the response has been overwhelming; beyond my expectations. Although I have not closed any deals as yet, I'm still very hopeful. Keep up the good work!"
Verona Mustagal

 BLOG >> March 2023

Bookkeeping with ChatGPT [Trends
Posted on March 31, 2023 @ 07:12:00 PM by Paul Meagher

I am currently working on book keeping for our farm business so me and my wife can file our 2022 income tax. The farm generates a large number of expenses for the different enterprises we operate on the farm (e.g., concerts, camping, bike rentals, weddings, airbnb, haymaking, winemaking) so it is non-trivial to do the bookkeeping for all the farm expenses. This year I decided to improve my bookkeeping approach by creating a web application called "Tracker" which will be used to store all farm-related expenses. I want the Tracker program to be able to read and write text files where each line of the text file records an expense. The expenses text file has fixed width fields so that the Tracker program can parse through each line and know what parts of the line are used to record different aspects of the expense (e.g., date, cost, tax, description, category, seller). This will allow me to finesse some banking records, for example, into a structured text file that my tracker program can read and insert into a database. Likewise, the Tracker program can output the contents of the FarmTracker database into a expenses output file with the same format as expenses input file (so that the output file can be modified in a text editor and read back into the database). I want to be able to do my bookkeeping by manipulating text files OR with on online program that will allow me to list, add, edit and delete the same expense records using a web interface.

The reason for wanting to move between both ways of working with expense records is because I have done my farm bookkeeping in the past using text files and found that I can often work with them faster than I can work with data entry forms. My wife, however, is not likely to want to work with text files so I thought creating a web application interface to the farm expense data using a database to also store the expense data might allow us to both work on the books for our farm using our preferred approaches.

You are probably thinking that there are lots of accounting and bookkeeping applications already out there so why re-invent the wheel? I have used online bookkeeping/accounting programs and personally found inputting data to be a bit more cumbersome compared to working with raw text files. I use a powerful text editor, Ultraedit, so I can slice and dice text files with it fairly well and when costs and taxes, for example, occupy fixed positions in each text record, I can easily select those columns of numbers to compute total costs and total taxes for any given category of expense. I think, however, that I can do more by creating a web application interface to these text files that also stores the data in a database that will allow me to do reports on the data more easily than on text files. I expect this to be a program that I continue to develop over time but I do need something that works well enough that I can start working on my bookkeeping with it by next week.

I'm aware that ChatGPT is all the rage these days and thought I would try using it to help me develop my book keeping software. ChatGPT generally doesn't exactly solve the problem I ask it to solve but it gets me in the ball park and with some customization I can get it working in the context of my program. I thought I would share with you a couple of questions I asked ChatGPT and the answers it gave me so that you can see how useful a coding partner ChatGPT can be.

So one question I asked ChatGPT was:

Show me php code that outputs fixed 3 right justified fixed-width fields with the first column being 5 characters, second column being 10 characters, third column being 10 characters.

The answer it gave me was:

$firstColumn = "12345";
$secondColumn = "1234567890";
$thirdColumn = "0987654321";

// Pad the columns to their fixed-widths
$firstColumn = str_pad($firstColumn, 5, " ", STR_PAD_LEFT);
$secondColumn = str_pad($secondColumn, 10, " ", STR_PAD_LEFT);
$thirdColumn = str_pad($thirdColumn, 10, " ", STR_PAD_LEFT);

// Output the columns with fixed widths and right-justified
echo sprintf("%5s%10s%10s", $firstColumn, $secondColumn, $thirdColumn);

This snippet helped set me on a path to figuring out how I might output the database records in a way that matched the format of each expense line in my expenses text file. It isn't a customized solution that I can just pop into my program (variable names are generic, for example) but it refreshes my memory on how to approach fixed width outputting of data into text files.

As I continued working on the software, I wanted to optimize how easy it might be to input an expense record. I'm a bit rusty on my javascript so I asked ChatGPT this question:

Javascript code to populate a cost input field and a tax input field from a price input field

The answer it gave me was:

// Assuming the cost, tax and price input fields have the following IDs:
var costInput = document.getElementById('cost');
var taxInput = document.getElementById('tax');
var priceInput = document.getElementById('price');

// Event listener to calculate and populate cost and tax when the price input field changes:
priceInput.addEventListener('input', calculateAndPopulateCostAndTax);

function calculateAndPopulateCostAndTax() {
  var price = parseFloat(priceInput.value);

  if (isNaN(price)) {
    costInput.value = ''; // clear the cost field if price is not a valid number
    taxInput.value = ''; // clear the tax field if price is not a valid number
  } else {
    var tax = ((price / 1.00) - (price / 1.08)).toFixed(2); // Assuming the tax rate is 8%
    var cost = (price - tax).toFixed(2);
    costInput.value = cost; // set the cost field with the calculated value
    taxInput.value = tax; // set the tax field with the calculated value
  }
}

As you can see, ChatGPT is a pretty good helper when it comes to developing web applications and I expect to have it open in my browser as I'm coding in the future.

Scott Willison had an interesting blog entitled AI-enhanced development makes me more ambitious with my projects. His examples of ChatGPT supported development are more advanced than mine, but the same conclusions he draws apply:

As an experienced developer, ChatGPT (and GitHub Copilot) save me an enormous amount of “figuring things out” time. For everything from writing a for loop in Bash to remembering how to make a cross-domain CORS request in JavaScript—I don’t need to even look things up any more, I can just prompt it and get the right answer 80% of the time.

This doesn’t just make me more productive: it lowers my bar for when a project is worth investing time in at all.

In the past I’ve had plenty of ideas for projects which I’ve ruled out because they would take a day—or days—of work to get to a point where they’re useful. I have enough other stuff to build already!

But if ChatGPT can drop that down to an hour or less, those projects can suddenly become viable.

Which means I’m building all sorts of weird and interesting little things that previously I wouldn’t have invested the time in.

Likewise, I probably would have been more reluctant to work on my Tracker program if I didn't get some good feedback from ChatGPT about how to approach certain parts of the program that might have taken me more time to figure out. ChatGPT is a game changer for programming and for many other domains as well. ChatGPT is helping me develop some personal bookkeeping software but it might be worth pondering whether ChatGPT can help with aspects of actual bookkeeping as well. I haven't gotten that far but I suspect I could start googling ChatGPT and Accounting/Bookkeeping to find some interesting applications.

Permalink 

The Hairpin Path [Books
Posted on March 28, 2023 @ 10:35:00 AM by Paul Meagher

I designated March my reading month and have just finished my second of 5 books. Looks like I won't finish all 5 books as I had hoped but I am aiming to finish 3 by the end of the month. The second book I finished was Richard Dawkins 2009 book The Greatest Show on Earth: The Evidence for Evolution. The main reason I read this book is because I have read bits and pieces of his work and wanted to dedicate myself to reading a complete book of his. I have 4 other books by him in my library and hope to tackle a couple of his earlier books next - The Blind Watchmaker (1986) and Climbing Mount Improbable (1996) next.

It would be difficult to do a short review of a book that discusses the large range of evidence and arguments in support of the natural selection theory of evolution. Instead what I will do is discuss one interesting idea, the hairpin path, from the book that also illustrates a point about non-fiction reading as well.

The idea that I will discuss is that you can trace an evolutionary path between any two animals, for example, a leopoard and a rabbit. This means that every animal on earth is related to every other animal on earth via a chain of intermediate species that connects these two animals. When I read the book the first time I admit to being a bit confused in trying to imagine what type of animal might be the intermediate animal between any two species you might pick. In my second reading of the first chapter of the book I noticed that he also mentioned the idea that the intermediate species is to be found at the "hairpin bend" that you reach by going back in time for both species until you reach a bend where they meet:

...The point is that for any two animals there has to be a hairpin path linking them, for the simple reason that every species shares an ancenstor with every other species: all we have to do is walk backwards from one species to the shared ancenstor, then turn through a hairpin bend and walk forwards to the other species.

Second, notice that we are talking only about locating a chain of animals that links a modern animal to another modern animal. We are most emphatically not evolving a rabbit into a leopard. I suppose you could say we are de-evolving back to the hairpin, then evolving forwards to the leopard from there. (pp. 25-26).

So on my first reading I had the misunderstanding mentioned in his second point, but when I returned back to the first chapter to re-read some of the book I became more aware of the hairpin relationship that he was advocating and that was more plausible and understandable to me. When I finished the book I made a hairpin turn back to the beginning of the book and the re-reading of the first chapter clarified an important point that I missed on my first reading.

When reading a non-fiction book it is often useful once you finish the book to review the book again from the beginning in order to clarify your understanding in certain areas and to develop an overall map of how the book's argument is structured so that you have some chance of remembering some ideas from it. My inability to get through all 5 books I hoped to get through in the month of march is in part due to not recognizing the need to re-read parts of a book again once I have finished it in order to properly assimilate the book. If the book was not very good or useful, I would perhaps skip this step but when you have read something that provides some insights or a better understanding of the world, it often pays to follow the hairpin path back to the beginning to either read or scan through the book again for ideas you want to remember, to remind yourself of the main arguments of the book and how they are laid out, and if you have the time to reread some chapters to see how much you really assimilated on the first reading. I'm not a big believer in speed reading and as my example shows it is easy to miss critical ideas because you are either tired, distracted or in a rush to finish parts of a book. You are also potentially denying yourself a pleasurable part of reading: when you come back to the same parts of a book again you are doing so with the benefit of having read the book already and that experiences can make for faster assimilation of the material, making more connections as you read, and appreciating finer aspects of the arguments and their overall relationship to the rest of the book.

The hairpin path is important because it is what connects us to all other species on earth and you could spend a lifetime studying the ancestors of all animals to see how different animal species diverged from various hairpins along the way. If you wish to study these paths then Richard Dawkins' book The Ancestors Tale (2nd Edition, 2018) is worth reading. The hairpin path is also interesting because it suggests a method of reading non-fiction books that is counter perhaps to the ideas of speed reading. The hairpin path involves getting to the end of a non-fiction book, perhaps one that you have marked up with lots of stars and footnotes, and then returning back to the beginning and starting again either reading or scanning the contents again to reinforce your understanding and memory of the books contents.

Permalink 

Bio-Inspired Design [Design
Posted on March 22, 2023 @ 08:11:00 AM by Paul Meagher

Yesterday I went for an ATV ride to enjoy the first warm spring day of 2023. Along my local ATV route is a beaver dam that I like to visit. Usually I visit the dam because I enjoy it as a unique landscape to look at, however, this time I started to wonder how the beavers actually constructed the dam - how was it engineered? The thought occurred to me that I might want to build a similar dam structure along a marsh on our farm property. To do that, however, I would have to better understand exactly how the beaver lays down sticks as it builds a dam.

The dam I visited yesterday is probably over 30 years old as it has been around since I started coming to it over 10 years ago and even then much of the dam was overgrown with grass from the rotting of the sticks and accumulation of sediment to form soil. I observed that the dam doesn't fully block the flow of water, instead it allows just the right amount through to keep the water levels where the beaver apparently wants it. I also observed that the downstream side of the beaver dam had sticks and branches running mostly at right angles to the bank like a buttress holding a wall in place. There were only a couple of places along the dam wall where I could observe the sticks and branches because the rest of the bank was covered with soil and grass over what existed below. In a mature dam, the grasses growing along the front of the dam likely prevents the erosion and failure of the dam. It is not clear whether there are any beavers actively managing the dam anymore.

This morning I did some more research online of how beavers engineer their dams. I found a 2016 article by Gerald Muller and James Watling called The engineering in beaver dams that had some of the information I was looking for. Beaver dams are build using wood when it is available in sufficient quantity to build with, otherwise they build using stone. Here is a short summary of how wooden beaver dams are built:

Most beaver dams are built from wooden sticks, with stones at the base. The cross section is triangular, with an average width-to-height ratio of 2.9, Watling (2014). The dams have a shallow upstream, and a steep downstream slope with a sealing layer made of mud and leaves on the upstream side. A gap is usually left in the sealing layer to allow for the water to flow through the dam. (p. 4)

This paper mentions that the University of Oregon constructed artificial beaver dams as a way to manage river flow. An article reporting their work includes an image of their artificial dam:

Notice the use of posts instead of sticks wedged into the stream bed to hold up the dam wall. The use of juniper in their dam is also unusual in my experience as most of the dams I've seen consists of alder, birch and other deciduous trees. One wonders how their analogue dam will hold up in the face of rising waters. Will it perform as well as a beaver's dam? It is useful to see how others might approach constructing an artificial dam.

The wikipedia page on Biomimetics has lots of examples of technologies inspired by studying nature. Often these examples look at some feature of a plant or animal that has some interesting characteristics (e.g., stickiness of a burdock) and applies the principle behind that characteristic to solving a human problem (e.g., tightening your shoe to your foot using velcro straps). The case of the beaver is a bit different because it is not a characteristic of the beaver that we are trying to emulate but the behavioral output of the beaver. We are trying to recreate the intelligence of the beaver to design our own version of a dam.

Beavers are recognized as ecosystem's engineers and keystone species for the effects that their dam building has upon the environment. Their dams, for example, can change a seasonally flowing river into a perennially flowing river. It can provide habitat for a large variety of animals, purify water, affect sedimentation in rivers, and change the level of ground water in the adjacent landscape. In addition to their dam building, they also build a lodge from similar materials to raise their families. They swim into their lodge underwater but the inside of the lodge is above water. This setup provides protection from predators and creates a warm and dry environment to raise their family even in severe cold. The beaver is a very smart and industrious rodent.

I decided to discuss my bio-inspiration in this blog because I mostly visit nature to get some exercise, improve my mood or enjoy the vistas. I am not often overtaken with the desire to understand the principle behind some natural design to solve my own problem.

On a final note, the beaver pelt has been the source of bio-inspired design for wetsuits. Maybe if I was a surfer I would have been bio-inspired to see that application. Bio-inspiration may be more likely to arise if you have a problem you want to solve and look to nature for possible solutions rather than expecting nature to jump out at you with a solution to some problem.

Permalink 

St Paddy's Day Tune [Events
Posted on March 17, 2023 @ 07:28:00 AM by Paul Meagher

Getting ready to celebrate St. Paddy's Day. Listening to a band, The Villages, that we went to see last weekend. They have a nice Celtic sound that seems appropriate for today. Hope you have a happy St. Paddy's day!

Permalink 

mRNA as a Drug [Books
Posted on March 10, 2023 @ 05:47:00 AM by Paul Meagher

As mentioned in my previous blog, I am trying to spend more time reading in March by focusing on 5 books to read. One of the books I have finished reading is a 2022 book by David Heath called Longshot: The Inside Story of the Race of a COVID-19 Vaccine. The reason why I selected this book is because I had only a vague understanding of how the mRNA vaccine came to be. This book definitely helps to fill that gap in understanding. In this blog I want to discuss the first part of this book which discusses the history of vaccine development and some of the fundamental discoveries that lead to our ability to use mRNA as a drug. The second part of the book discusses the formation of the company Moderna which was the first unicorn company devoted to deploying mRNA as a drug. The final part of the book discusses what researchers learned about vaccine development from recent major viral outbreaks (AIDS, RSV, MERS, ZIKA) and why people thought using mRNA technology as the basis for a COVID vaccine was a good idea.

The idea that you could view mRNA as a drug was popularized in a Ted Talk by Moderna CEO Stéphane Bancel (published Dec 27, 2013) which I have incorporated below. Viewing mRNA as a drug is a succinct and memorable way of expressing why mRNA is potentially valuable. Before we get to that, however, I want to discuss the two fundamental discoveries that were made on route to our ability to use mRNA as a drug.

To use mRNA as a drug you needed to solve two basic problems:

First you need to find a way to avoid an immune response to injections of mRNA. Katalin Karikó and Drew Wiseman were pioneers in resolving this issue. Katalin's specialty was understanding how to practically work with and think about mRNA (see researched the molecule for most of her academic career). Wiseman's specialty was immunology so his lab could conduct the studies on how the immune system responded to mRNA injections. They observed that some injections of mRNA cause inflammation, but others don't. On that bases, Katalin Karikó looked for what the solution might be for injecting mRNA in a way that reliably avoids an inflammatory immune response. Katalin "began to realize that the nucleoside uridine was critical to causing inflammation. So she looked for ways to modify it" (p 66). Based on a suggestion by a Hungarian scientist, she replaced uridine with pseudouridine and that form of mRNA reliably avoided an inflammatory immune response. Kariolo and Weismann published this result in a paper on August 23, 2005 called Suppression of RNA Recognition by Toll-like Receptors: The impact of Nucleoside Modification and the Evolutionary Origin of RNA which caused no buzz at the time but is now recognized as a seminal contribution to the development of mRNA therapeutics.

The second problem you needed to solve if you want to use mRNA as a drug is to demonstrate that injecting mRNA into a cell can produce a desired immunological response. Katalin and Drew published another seminal paper on November 16, 2008 called Incorporation of pseudouridine into mRNA yields superior nonimmunogenic vector with increased translational capacity and biological stability that demonstrated this. Turns out that the pseudourindine substitution they made to mRNA to avoid rejection by the immune system was also important in producing a bigger immune response (higher levels of a particular protein) then when you didn't modify the mRNA. mRNA is the code used in ribosomes to make proteins. Katalin and Drew came up with an mRNA code to make the luciferase protein which causes bioluminance in fireflies. When you injected modified versus unmodified mRNA into a cell, you could use a luminance detector to measure that the modified version of mRNA generated more light than the unmodified version of mRNA which tells you that more luciferase protein was produced using their modified mRNA molecule. The final part of that paper describes the potential value of their research:

These collective findings are important steps in developing the therapeutic potential of mRNA, such as using modified mRNA as an alternative to conventional vaccination and as a means for expressing clinically beneficial proteins in vivo safely and effectively.

Katalin and Weisman were pioneers in mRNA therapeutics and many believe they will eventually receive a Nobel Prize for the work which these two papers discuss. Their influence in the field is by no means over as both are still active and likely to produce more mRNA innovation and products.

The next 2 chapters in the Longshot book feature the rise of Moderna. The name is derived from "modified RNA" or "mod-RNA". Below is a famous Ted Talk delivered by CEO Stéphane Bancel in the early days of the company. Many were inspired to join the company and invest in the company due to this video. This presentation bears some similarity to Stephen Jobs' 2007 IPhone launch in that it made people realize the potential of a new technology, in this case the potential of mRNA technology in medicine. 3 years later, Stephen had raised 1.9 billion dollars and Moderna was valued at 5 billion.

Permalink 

5 Book Reading Challenge [Books
Posted on March 3, 2023 @ 09:23:00 AM by Paul Meagher

Lately I've been wanting to get back into reading nonfiction books (my preferred form of reading material). I enjoy watching Youtube and Netflix but it doesn't leave me with the same sense of satisfaction as completing a good book. Towards that end, I have decided to dedicate more of my time in March to reading. I've got 5 books that I'm currently working on that I am setting the goal of finishing by the end of March. I hope to blog about some of what I am learning from these books. I find social media, youtube, netflix are all taking up more and more of my time so it takes more of an effort of will to try to read full books, to regain some of the reading discipline I used to have. Alot of universities and highschools try to implement a reading week this time of year. I think you need a full month of reading to finish a few books and develop or renew reading habits. For me, that translates to a 5 book reading challenge for March.

Permalink 

 Archive 
 

Archive


 November 2023 [1]
 June 2023 [1]
 May 2023 [1]
 April 2023 [1]
 March 2023 [6]
 February 2023 [1]
 November 2022 [2]
 October 2022 [2]
 August 2022 [2]
 May 2022 [2]
 April 2022 [4]
 March 2022 [1]
 February 2022 [1]
 January 2022 [2]
 December 2021 [1]
 November 2021 [2]
 October 2021 [1]
 July 2021 [1]
 June 2021 [1]
 May 2021 [3]
 April 2021 [3]
 March 2021 [4]
 February 2021 [1]
 January 2021 [1]
 December 2020 [2]
 November 2020 [1]
 August 2020 [1]
 June 2020 [4]
 May 2020 [1]
 April 2020 [2]
 March 2020 [2]
 February 2020 [1]
 January 2020 [2]
 December 2019 [1]
 November 2019 [2]
 October 2019 [2]
 September 2019 [1]
 July 2019 [1]
 June 2019 [2]
 May 2019 [3]
 April 2019 [5]
 March 2019 [4]
 February 2019 [3]
 January 2019 [3]
 December 2018 [4]
 November 2018 [2]
 September 2018 [2]
 August 2018 [1]
 July 2018 [1]
 June 2018 [1]
 May 2018 [5]
 April 2018 [4]
 March 2018 [2]
 February 2018 [4]
 January 2018 [4]
 December 2017 [2]
 November 2017 [6]
 October 2017 [6]
 September 2017 [6]
 August 2017 [2]
 July 2017 [2]
 June 2017 [5]
 May 2017 [7]
 April 2017 [6]
 March 2017 [8]
 February 2017 [7]
 January 2017 [9]
 December 2016 [7]
 November 2016 [7]
 October 2016 [5]
 September 2016 [5]
 August 2016 [4]
 July 2016 [6]
 June 2016 [5]
 May 2016 [10]
 April 2016 [12]
 March 2016 [10]
 February 2016 [11]
 January 2016 [12]
 December 2015 [6]
 November 2015 [8]
 October 2015 [12]
 September 2015 [10]
 August 2015 [14]
 July 2015 [9]
 June 2015 [9]
 May 2015 [10]
 April 2015 [9]
 March 2015 [8]
 February 2015 [8]
 January 2015 [5]
 December 2014 [11]
 November 2014 [10]
 October 2014 [10]
 September 2014 [8]
 August 2014 [7]
 July 2014 [5]
 June 2014 [7]
 May 2014 [6]
 April 2014 [3]
 March 2014 [8]
 February 2014 [6]
 January 2014 [5]
 December 2013 [5]
 November 2013 [3]
 October 2013 [4]
 September 2013 [11]
 August 2013 [4]
 July 2013 [8]
 June 2013 [10]
 May 2013 [14]
 April 2013 [12]
 March 2013 [11]
 February 2013 [19]
 January 2013 [20]
 December 2012 [5]
 November 2012 [1]
 October 2012 [3]
 September 2012 [1]
 August 2012 [1]
 July 2012 [1]
 June 2012 [2]


Categories


 Agriculture [77]
 Bayesian Inference [14]
 Books [18]
 Business Models [24]
 Causal Inference [2]
 Creativity [7]
 Decision Making [17]
 Decision Trees [8]
 Definitions [1]
 Design [38]
 Eco-Green [4]
 Economics [14]
 Education [10]
 Energy [0]
 Entrepreneurship [74]
 Events [7]
 Farming [21]
 Finance [30]
 Future [15]
 Growth [19]
 Investing [25]
 Lean Startup [10]
 Leisure [5]
 Lens Model [9]
 Making [1]
 Management [12]
 Motivation [3]
 Nature [22]
 Patents & Trademarks [1]
 Permaculture [36]
 Psychology [2]
 Real Estate [5]
 Robots [1]
 Selling [12]
 Site News [17]
 Startups [12]
 Statistics [3]
 Systems Thinking [3]
 Trends [11]
 Useful Links [3]
 Valuation [1]
 Venture Capital [5]
 Video [2]
 Writing [2]