Is Otf Better Than Ttf

0 views
Skip to first unread message

Nikita Desjardins

unread,
Aug 4, 2024, 2:28:13 PM8/4/24
to riigenalo
Basedat the United Nations, the Better Than Cash Alliance is a partnership of governments, companies, and international organizations that accelerates the transition from cash to responsible digital payments to advance the Sustainable Development Goals.

Digital payments contribute to building a strong foundation for the Sustainable Development Goals. When digital payments are swifter, safer, more transparent, and more private than cash, they enable access to vital growth opportunities like energy, water, and credit.


LinkedIn and 3rd parties use essential and non-essential cookies to provide, secure, analyze and improve our Services, and to show you relevant ads (including professional and job ads) on and off LinkedIn. Learn more in our Cookie Policy.


That is the essence of the challenge I accepted in July 2014 when I took a position on the board of trustees of Penn State, and it was the challenge I issued to my fellow board members when I stepped down earlier this summer: Leave this place better than you found it.


When the board of Prologis asked me to take over as CEO in 2008, the company was struggling and teetering on declaring bankruptcy. Our leadership team focused on survival by doing what we could to make the company a little better with every action we took. A little better each day from everybody in the company added up, and Prologis regained its place among the top companies in the world.


I felt a different sense of responsibility with the Penn State assignment, however, because I am a proud alumnus. I showed up as a wide-eyed freshman in the mid-1970s, and I can assure you that Penn State left me much better than it had found me!


The board faced some difficult decisions during my tenure, but leaders throughout the university were up to the challenges. Others can judge better than I, but I left with great confidence that the university was better than it was a decade ago and, even more importantly, not nearly as good as it soon will be.


Thanks Matt. I might be doing something wrong. Below is a set of instructions for the GPT. But when I start interacting with it, it always tries give a holistic overview of the system. Instead I want it to be more collaborative. i.e we work out the details together.


Thank you. Will spend sometime today trying to see if I can use your suggestions in order to see if I can come up with something better. I had better luck last night and then I managed to mess things up so I tried again this morning.


Interaction: You will collaborate closely with a client lacking web development expertise. Work together to outline a plan, openly discuss potential challenges, and provide honest feedback.


You also need to evolve your GPT instructions as you go. Two ways. One is from keeping a keen eye on how the GPT follows your instructions along with how it falls into its normal patterns (for ex, it starts making up crap). Another is to ask context specific questions IN the Create chat of the GPT.


Currently, I see GPTs as useful shortcuts. With various configurations tailored to specific contexts, they allow us to input simple prompts and receive elaborate responses without the need for detailed explanations each time.


Once I have a clear direction for the project GPT, I use the Persona builder tool (now MetaGPT) to define a role and instructions for the project GPT that I take over to the builder page and begin to formulate the instructions. Hope that helps!


Adopt a step-by-step methodology in your instruction. Begin with individual elements of the system, progressively building towards an understanding of the entire structure. This sequential approach ensures effective learning and application.


Some people say I am better writer than I am a conversationalist. This may have to do with a diagnosis of autism. The medical definition of autism has broadened in recent years to include children and adults who show no evidence of expressive language delays or intellectual disability but do demonstrate the delays in social and emotional skills commonly seen in individuals with more significant autism.


This article is based on my GopherCon Singapore 2019 presentation. In the presentation I referenced material from my post on declaring variables and my GolangUK 2017 presentation on SOLID design. For brevity those parts of the talk have been elided from this article. If you prefer, you can watch the recording of the talk.


But readability as a concept is subjective. Readability is nit picking about line length and variable names. Readability is holy wars about brace position. Readability is the hand to hand combat of style guides and code review guidelines that regulate the use of whitespace.


Clarity, on the other hand, is the property of the code on the page. Clear code is independent of the low level details of function names and indentation because clear code is concerned with what the code is doing, not just how it is written down.


Go programs are traditionally written in a style that favours guard clauses and preconditions. This encourages the successful path to proceed down the page rather than indented inside a conditional block. Mat Ryer calls this line of sight coding, because, the active part of your function is not at risk of sliding out of sight beyond the right hand margin of your screen.


The canonical example of this is the classic Go error check idiom; if err != nil then return it to the caller, else continue with the function. We can generalise this pattern a little and in pseudocode we have:


The comp function is written in a similar form to guard clauses from earlier. If a is less than b, the return -1 path is taken. If a is greater than b, the return 1 path is taken. Else, a and b are by induction equal, so the final return 0 path is taken.


How do we know this? The Go spec declares that each function that returns a value must end in a terminating statement. This means that the body of all conditions must return a value. Thus, this does not compile:


However this code is hard to read as each of the conditions is written differently, the first is a simple if a b, and the last conditional is actually unconditional.


By moving the default condition inside the switch, the reader only has to consider the cases that match their condition, as none of the cases can fall out of the switch block because of the default clause.1


I found this quote recently and I think it is apt. My arguments for clarity are in truth arguments intended to emphasise the behaviour of the code, rather than be side tracked by minutiae of the structure itself. Said another way, what is the code trying to do, not how is it is trying to do it.


I opened this article with a discussion of readability vs clarity and hinted that there were other principles of well written Go code. It seems fitting to close on a discussion of those other principles.


Last year Bryan Cantrill gave a wonderful presentation on operating system principles, wherein he highlighted that different operating systems focus on different principles. It is not that they ignore the principles that differ between their competitors, just that when the chips are down, they prioritise a core set. So what is that core set of principles for Go?


Code is read many more times than it is written. A single piece of code will, over its lifetime, be read hundreds, maybe thousands of times. It will be read hundreds or thousands of times because it must be understood. Clarity is important because all software, not just Go programs, is written by people to be read by other people. The fact that software is also consumed by machines is secondary.


This is complexity. Complexity turns reliable software in unreliable software. Complexity is what leads to unmaintainable software. Complexity is what kills software projects. Clarity and simplicity are interlocking forces that lead to maintainable software.


The last Go principle I want to highlight is productivity. Developer productivity boils down to this; how much time do you spend doing useful work verses waiting for your tools or hopelessly lost in a foreign code-base? Go programmers should feel that they can get a lot done with Go.


The joke goes that Go was designed while waiting for a C++ program to compile. Fast compilation is a key feature of Go and a key recruiting tool to attract new developers. While compilation speed remains a constant battleground, it is fair to say that compilations which take minutes in other languages, take seconds in Go. This helps Go developers feel as productive as their counterparts working in dynamic languages without the maintenance issues inherent in those languages.


More fundamental to the question of developer productivity, Go programmers realise that code is written to be read and so place the act of reading code above the act of writing it. Go goes so far as to enforce, via tooling and custom, that all code be formatted in a specific style. This removes the friction of learning a project specific dialect and helps spot mistakes because they just look incorrect.


With Subversion, you have a Problem: The SVN Repository may be in a location you can't reach (in your company, and you don't have internet at the moment), you cannot commit. If you want to make a copy of your code, you have to literally copy/paste it.


With Git, you do not have this problem. Your local copy is a repository, and you can commit to it and get all benefits of source control. When you regain connectivity to the main repository, you can commit against it.


Git seems to be the "new, shiny, cool" thing. It's by no means bad (there is a reason Linus wrote it for the Linux Kernel development after all), but I feel that many people jump on the "Distributed Source Control" train just because it's new and is written by Linus Torvalds, without actually knowing why/if it's better.

3a8082e126
Reply all
Reply to author
Forward
0 new messages