Renise Black
type: channel
date: 2025-08-20T19:48:50Z
update period: hourly
update frequency: 1
update base: 2000-01-01T12:00+00:00
generator agent: https://wordpress.org/
items: Chapter 3: Basic Tools
items: Apprends Lundi 2025-04-28
items: Apprends Dimanche 2025-04-27
items: Chapter 2: A Pragmatic Approach
items: Pragmatic Programmer Notes #2
items: Pragmatic Programmer Notes #1
items: Apprends Samedi 2025-04-26
items: Google Gen AI 5-Day Intensive: Day Four – Part 2 (4/5)
items: Google Gen AI 5-Day Intensive: Day Four – Part 1 (4/5)
items: Apprends Vendredi 04-25

Chapter 3: Basic Tools
type: item
creator: Renise
date: 2025-08-20T19:48:50Z
subject: Coding
subject: pragmatic programmer
description: This chapter discusses some practical tools every developer should use, with a high level of proficiency. They aren’t the be-all, end-all of being a developer, but they are very good at what they can do. Plain Text They provide a compelling argument that using plain text is important. It can be structured (JSON, YAML) or unstructured. In either … Continue reading "Chapter 3: Basic Tools" The post Chapter 3: Basic Tools first appeared on Renise Black.
encoded: This chapter discusses some practical tools every developer should use, with a high level of proficiency. They aren’t the be-all, end-all of being a developer, but they are very good at what they can do. Plain Text They provide a compelling argument that using plain text is important. It can be structured (JSON, YAML) or unstructured. In either version, it should be written in a `human-readable` format, not just be human understandable. The difference here is that a random string of letters and numbers is understandable to a human, but it isn’t readable, where the reader can gain insights or understanding. Shells They advise having a bias towards using Shells versus IDEs as much as possible. They are the `workbench` for manipulating files. They can, of course, be customized to your preferences. For example, my shell in Terminal (macOS) will display the current folder and git branch in one line above the cursor. <img fetchpriority="high" decoding="async" width="1024" height="434" src="https://reniseblack.com/wp-content/uploads/2025/08/terminal_command_line-1024x434.png" alt="" class="wp-image-427" srcset="https://reniseblack.com/wp-content/uploads/2025/08/terminal_command_line-1024x434.png 1024w, https://reniseblack.com/wp-content/uploads/2025/08/terminal_command_line-300x127.png 300w, https://reniseblack.com/wp-content/uploads/2025/08/terminal_command_line-768x326.png 768w, https://reniseblack.com/wp-content/uploads/2025/08/terminal_command_line.png 1163w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /> You can also use aliases to help automate repeated operations to avoid having to retype them manually. For example, I used ZSH at Amazon to create shortcuts for specific terminal commands and options to improve my workflow. Another useful tip is to leverage command completion. I use command completion all the time, especially when working with Git. I can easily recall previous commands and do path completion when navigat…

Apprends Lundi 2025-04-28
type: item
creator: Renise
date: 2025-08-20T19:24:48Z
subject: Français
subject: french-language
description: J’ai continué apprendre comment parler de la nourriture. Je sais maintenant comment utiliser ‘plein’ qui est le contraire de ‘vide’. J’ai appris aussi comment utiliser ‘ça a l’air’ avec la nourriture. J’ai pris quelque temps à apprendre le différence entre ‘en face de’ et ‘d’en face’. ‘En face de’ est près de devant, alors ‘d’en … Continue reading "Apprends Lundi 2025-04-28" The post Apprends Lundi 2025-04-28 first appeared on Renise Black.
encoded: J’ai continué apprendre comment parler de la nourriture. Je sais maintenant comment utiliser ‘plein’ qui est le contraire de ‘vide’. J’ai appris aussi comment utiliser ‘ça a l’air’ avec la nourriture. J’ai pris quelque temps à apprendre le différence entre ‘en face de’ et ‘d’en face’. ‘En face de’ est près de devant, alors ‘d’en face’ est comme la main gauche et la main droite. Expressions Notes Il n’y a plus d’eau dans la bouteille. Elle est <vide>. Il n’y a plus rien dans la bouteille. Je viens de faire les course. Il y a beaucoup de choses dans le frigo. <Il est plein>. Le contraire de vide. <Mon bol> est plein On mange de la soupe dans un bol. J’adore <les sushi>. Le pluriel de sushi est ‘sushi’ et ‘sushis’, sans dénombrable et sexe. Si tu veux de la glace, <il y en a ici>. Non merci, ma tasse est <déjà pleine>. La tasse déjà contient quelque chose On mange avec <une fourchette> et <un couteau>. <Le poivre> est noir et on l’utilise souvent avec le sel quand on cuisine. Le poivre est une épice. Il y a beaucoup <d’épices> dans le curry. J’aime tous les fruits sauf les poires. Je déteste les poires. (excepté) Je mange tout mais je ne mange jamais des poires. Je veux acheter une baguette mais <Il n’y en a plus> à la boulangerie. Comment dit-ons <there isn’t any more> en anglais. On peut manger <de la chantilly> avec de la glace ou des fraises. On fait de la chantilly avec la crème épaisse. <La recette> explique comment on doit préparer un plat. <Le boulanger> vient de faire ce pain. C’est du pain frais. Quelqu’un qui fait des pains, des croissants, des biscuits, etc. Je regarde tous ces gâteaux et je pense que <ça a l’air délicieux>. Quand on voit quelque chose avec les yeux. J’ai <tout mélangé> Mets les ingrédients ensemble pour faire quelque chose de neuf Il ajoute les légumes et elle les mélange avec <une grosse cuillère>. On mange des céréales avec une cuillère. J’adore tes pâtes d’habitude, mais <celle-ci sont sucrées>. C’est <une omelette> au fromage. On prépa…

Apprends Dimanche 2025-04-27
type: item
creator: Renise
date: 2025-08-06T23:50:46Z
subject: Français
subject: french-language
description: J’ai finis apprendre de ‘argent et j’ai commencé apprendre de nourriture. J’ai appris comment dire une information, dépenser d’argent d’un distributeur. J’ai appris aussi quelques expressions sur monnaie. C’était facile pour moi. J’ai commencé apprendre des plat et ingrédients de la nourriture. Donc, je trouve que c’est plus facile à apprendre et parler le français. … Continue reading "Apprends Dimanche 2025-04-27" The post Apprends Dimanche 2025-04-27 first appeared on Renise Black.
encoded: J’ai finis apprendre de ‘argent et j’ai commencé apprendre de nourriture. J’ai appris comment dire une information, dépenser d’argent d’un distributeur. J’ai appris aussi quelques expressions sur monnaie. C’était facile pour moi. J’ai commencé apprendre des plat et ingrédients de la nourriture. Donc, je trouve que c’est plus facile à apprendre et parler le français. Expressions Notes <Il faut> économiser. Comment utiliser <Il faut> ou le verbe falloir Le dollar est <la monnaie> d’États-Unis On doit savoir le sens de <monnaie> et que le mot est aussi féminin. <Gagner sa vie>, c’est gagner assez d’argent pour vivre. Parler de comment on gagner de l’argent dans ta vie. Je gagne bien ma vie Encore comment utiliser <gagner ta vie> Nous gagnons bien notre vie La méme qui est au-dessus Je dois remplir <un formulaire> Ce n’est pas une formule de chimie. C’est comme un papier qu’on met ton nom, ta téléphone et t’adresse de maison. Vous n’économisez pas assez d’argent. On parle de ne dépenser de l’argent. Vous économisez assez d’argent <pour acheter> une voiture. Toutes ces choses sont gratuites. L’Accord entre le nom et l’adjectif gratuit(es) Vous pouvez <faire votre code>. Attention, il ne faut pas oublier ton passeport Tu as fait les courses, Sophie. Oui, mai j’ai perdu <toute la monnaie> Tu retires combien d’argent? Retirer de l’argent d’un distributeur. Vous pouvez payer <par chèque> ou <en espèces>? Avec l’espèce, on paye avec la monnaie au papier On doit vraiment aller au marriage de tante Élisabeth? C’est stupide. Je ne vais porter cette robe qu’une seule fois. Savoir le sens de <stupide> <En fait>, je pense que c’est parfait! En anglais: <in fact> enfin En anglais: finally Vous pouvez payer seulement en espèces l’espèces en anglais: cash Excusez-moi, j’ai besoin d’une information. une information en anglais: a form Avez-vous toutes les informations? Je ne perds jamais rien Une phrase que j’ai voudrais savoir. Tu en ajoutes Il y a trop de sel dans cette soupe. Elle es…

Chapter 2: A Pragmatic Approach
type: item
creator: Renise
date: 2025-08-06T23:14:38Z
subject: Coding
subject: pragmatic programmer
description: I found this chapter to be insightful and can relate it to my experience as an engineer, both good and bad. The chapter discusses good design, DRY, tracer code, prototyping, and estimating. I’ll share what I learned along with my thoughts. Easy To Change (ETC) The chapter begins with a discussion on what makes good … Continue reading "Chapter 2: A Pragmatic Approach" The post Chapter 2: A Pragmatic Approach first appeared on Renise Black.
encoded: I found this chapter to be insightful and can relate it to my experience as an engineer, both good and bad. The chapter discusses good design, DRY, tracer code, prototyping, and estimating. I’ll share what I learned along with my thoughts. Easy To Change (ETC) The chapter begins with a discussion on what makes good design. They emphasize the benefits of good design, including that it must be changeable without changing any adjacent, upstream, or downstream code. In essence, use ETC or make it easier to change by using techniques such as modularization and interfaces to keep responsibilities separate. ETC is more than just applying the Single Responsibility Principle. *Thomas* and *Hunt* advocate that it’s a value for decision-making. It won’t tell you how to design and implement systems, but it will help you make better decisions between design and implementation options. When dealing with unknown paths or novel projects, their sage advice is to make it replaceable. That way, if a better design option is presented later, that chunk of code can be quickly replaced. In their words, your initial design or implementation decision “won’t be a roadblock” to implementing the better option. Finally, be sure to note the situation and reasoning in a journal and code to be able to understand and reflect on your decision later. This is wise advice for me. I didn’t keep meta notes, and I feel this bit of wisdom is helpful to grow as an engineer. Don’t Repeat Yourself (DRY) They emphasize that DRY, or Don’t Repeat Yourself, applies to both code and documentation. If a change has to be made in multiple locations, then the code isn’t DRY. For example, having a function where multiple lines use the same steps to perform a calculation. In this case, remove the repetition by moving those steps to a separate function that can be used by each operation. Even low-level operations such as number and text formatting should be converted to a reusable function call, rather than repeating the…

Pragmatic Programmer Notes #2
type: item
creator: Renise
date: 2025-07-24T00:13:53Z
subject: Coding
subject: pragmatic programmer
description: Continuing with chapter one, section seven (7) on communication. Thomas and Hunt offer advice on how to be a better engineer by communicating more effectively. The section begins by advising that it’s “not just what you’ve got, but also how you package it”. They caution that even the best code or ideas are useless unless … Continue reading "Pragmatic Programmer Notes #2" The post Pragmatic Programmer Notes #2 first appeared on Renise Black.
encoded: Continuing with chapter one, section seven (7) on communication. Thomas and Hunt offer advice on how to be a better engineer by communicating more effectively. The section begins by advising that it’s “not just what you’ve got, but also how you package it”. They caution that even the best code or ideas are useless unless other people are aware of them. Developers create various forms of communication, including in meetings, through written code, proposals, and reports. When preparing non-code communication, treat your native language like a programming language by honoring the DRY principle and leveraging automation. Automation in this case can include any documentation templates. For code, inline documentation should focus on why a decision is made. It shouldn’t explain how because that’s what the code is for. Know your audience: They caution, “just talking isn’t enough”. You must understand the needs and capabilities of your audience, and request audience feedback to gauge their level of understanding and engagement. Know what you want to say: Create a plan for what you want to say to ensure it expresses what you want in all communication types, including verbal communication. Choose your moment: Figure out if your audience is receptive to your ideas before you start sharing them by understanding their priorities. Choose a style: Understand how your audience wants the information delivered – a formal document, quick details, or a verbal discussion. Make it look good: A good-looking document matters, so take the time to edit and format your communication to make an impact. Involve your audience: Get readers engaged early in the documentation process. Be a listener: Listen to others as you would have them listen to you. Get back to people: Whether it’s email, social media, or documentation comments, there’s no excuse not to respond. Documentation Best Practices They nicely devote a separate section for documentation, and as a fan of technical writing, it pleased me …

Pragmatic Programmer Notes #1
type: item
creator: Renise
date: 2025-07-16T23:36:05Z
subject: Coding
subject: pragmatic programmer
description: I finally got the chance to start reading The Pragmatic Programmer, 20th Anniversary Edition by David Thomas and Andrew Hunt. These are my initial notes from this first reading. These are my rough notes and are intended for me to reflect on what I read. I capture the key points that I feel are important … Continue reading "Pragmatic Programmer Notes #1" The post Pragmatic Programmer Notes #1 first appeared on Renise Black.
encoded: I finally got the chance to start reading The Pragmatic Programmer, 20th Anniversary Edition by David Thomas and Andrew Hunt. These are my initial notes from this first reading. <img decoding="async" width="783" height="1024" src="https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book-783x1024.png" alt="" class="wp-image-406" style="width:521px;height:auto" srcset="https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book-783x1024.png 783w, https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book-229x300.png 229w, https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book-768x1005.png 768w, https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book-1174x1536.png 1174w, https://reniseblack.com/wp-content/uploads/2025/07/Pragmatic_programmer_book.png 1320w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /> These are my rough notes and are intended for me to reflect on what I read. I capture the key points that I feel are important to pay attention to. Attitude and Style Think beyond the immediate problem. Place it in a larger context. Seek the bigger picture. Team Trust The team needs to trust me. Own It Look for risks beyond my control. Have contingency plans for risks. Know my options such as: prototyping, testing, automation, and learning. Software Entropy Fix ‘broken windows’ quickly. Document issues as soon as they are known. Don’t do additional harm while fixing additional issues. Handling Change Be a catalyst for change. Make reasonable asks. Avoid a narrow focus. Know the big picture. Use situational awareness. Software Quality Write ‘good enough’ software. Meet user and system requirements. Let users participate. Consider modularization or microservices. Keep Skills Fresh Learn a new language annually. Read a technical book monthly. Take classes. Participate in user groups. Try coding in different environments. Read cur…

Apprends Samedi 2025-04-26
type: item
creator: Renise
date: 2025-07-09T01:03:56Z
subject: Français
subject: french-language
description: Aujourd’hui j’ai étudié plus mieux que hier et je ne sais pas pourquoi, mais je me sens contente avec ça. J’étais un peur inquiète parce que j’adore le français et je ne veux pas oublier rien. J’ai CEFR quarante-six aussi et je trouve que je peux parler de beaucoup de la vie. J’ai commencé les … Continue reading "Apprends Samedi 2025-04-26" The post Apprends Samedi 2025-04-26 first appeared on Renise Black.
encoded: Aujourd’hui j’ai étudié plus mieux que hier et je ne sais pas pourquoi, mais je me sens contente avec ça. J’étais un peur inquiète parce que j’adore le français et je ne veux pas oublier rien. J’ai CEFR quarante-six aussi et je trouve que je peux parler de beaucoup de la vie. J’ai commencé les leçons de l’argent comme ‘monnaie’, ‘l’espèce’ and ‘code’. Expressions Notes J<’ai envie de> faire du sport. La même que ‘je <veux> faire du sport. J’ai mal à <le genou> Les genoux est au milieu de la jambe Tu devrais manger plus de légumes pour avoir bonne santé! <A-t-elle envie de> faire de la course? <Est-ce qu’elle veut> Vous devrez <prendre soin> de vous Pour avoir la bonne santé Sarah, tu as honte de toi? Paul as honte parce qu’il maillot de bain est trop petit! Vous souhaitez payer <en espèces>? Non, je préfère toujours payer <par carte>. Si vous voulez retirer de l’argent, il y a un distributeur. Les banques ont les distributeurs de l’argent. Il remplit un document pour ouvrir un compte dans une banque française. Vous avez économisé assez d’argent pour acheter une voiture. Elle veut gagner de l’argent pour acheter une voiture rouge. Je gagne bien ma vie! J’achète un pull dans un magasin. Je pay, puis on me donne mon pull et <le ticket>. Le ticket est qu’on reçoit après payer quelque chose. Ça coûte dix euros et quinze centimes. Tu as quinze centimes? J’ai un billet de dix euros mais je n’ai pas de (la) monnaie. Dernier Articles Apprends Lundi 2025-04-28 Apprends Dimanche 2025-04-27 Apprends Samedi 2025-04-26 The post Apprends Samedi 2025-04-26 first appeared on Renise Black.

Google Gen AI 5-Day Intensive: Day Four – Part 2 (4/5)
type: item
creator: Renise
date: 2025-06-12T21:36:27Z
subject: Coding
subject: google generative ai
subject: kaggle
description: Codelab #2 – Use Google Search In Generation This is the first assigned codelab on day four of the intensive. Download it here from Github to run locally or run in this Kaggle notebook. The post Google Gen AI 5-Day Intensive: Day Four – Part 2 (4/5) first appeared on Renise Black.
encoded: Codelab #2 – Use Google Search In Generation This is the first assigned codelab on day four of the intensive. Download it here from Github to run locally or run in this Kaggle notebook. """Use Google Search in Generation Google Gen AI 5-Day Intensive Course Host: Kaggle Day: 4 Codelab: https://www.kaggle.com/code/markishere/day-4-google-search-grounding """ import io import os from pprint import pprint from google import genai from google.api_core import retry from google.genai import types from IPython.display import HTML, Image, Markdown, display client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"]) # Define a retry policy. The model might make multiple consecutive calls automatically # for a complex query, this ensures the client retries if it hits quota limits. is_retriable = lambda e: ( isinstance(e, genai.errors.APIError) and e.code in {429, 503} ) if not hasattr(genai.models.Models.generate_content, "__wrapped__"): genai.models.Models.generate_content = retry.Retry(predicate=is_retriable)( genai.models.Models.generate_content ) # To enable search grounding, specify it as a tool 'google_search' # as a parameter in `GenerateContentConfig` passed to `generate_content` # Ask for information without search grounding response = client.models.generate_content( model="gemini-2.0-flash", contents="When and where is Billie Eilish's next concert?", ) Markdown(response.text) # And now rerun the same query with search grounding enabled. config_with_search = types.GenerateContentConfig( tools=[types.Tool(google_search=types.GoogleSearch())] ) def query_with_grounding(): response = client.models.generate_content( model="gemini-2.0-flash", contents="When and where is Billie Eilish's next concert?", config=config_with_search, ) return response rc = query_with_grounding() Markdown(rc.text) # Response metadata # Get links to search suggestions, supporting documents and information # on how they were used. while ( not rc.grounding_metadata.grounding_supports or not rc.grou…

Google Gen AI 5-Day Intensive: Day Four – Part 1 (4/5)
type: item
creator: Renise
date: 2025-06-12T21:29:30Z
subject: Coding
subject: google generative ai
subject: kaggle
description: Codelab #1 – Tune A Gemini Model This is the first assigned codelab on day four of the intensive. Download it here from Github to run locally or run in this Kaggle notebook. The post Google Gen AI 5-Day Intensive: Day Four – Part 1 (4/5) first appeared on Renise Black.
encoded: Codelab #1 – Tune A Gemini Model This is the first assigned codelab on day four of the intensive. Download it here from Github to run locally or run in this Kaggle notebook. """Tune Gemini Model for Custom Function Google Gen AI 5-Day Intensive Course Host: Kaggle Day: 4 Codelab: https://www.kaggle.com/code/markishere/day-4-fine-tuning-a-custom-model """ import datetime import email import os import re import time import warnings from collections.abc import Iterable import pandas as pd import tqdm from google import genai from google.api_core import retry from google.genai import types from sklearn.datasets import fetch_20newsgroups from tqdm.rich import tqdm as tqdmr client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"]) for model in client.models.list(): if "createTunedModel" in model.supported_actions: print(model.name) newgroups_train = fetch_20newsgroups(subset='train') newgroups_test = fetch_20newsgroups(subset='test') # View list of class names for dataset newsgroups_train.target_names print(newsgroups_train.date[0]) def preprocess_newsgroup_row(data): # Extract only the subject and body. msg = email.message_from_string(data) text = f'{msg["Subject"]}\n\n{msg.get_payload()}' # Strip any remaining email addresses text = re.sub(r"[\w\.-]+@[\w\.-]+", "", text) # Truncate the text to fit within the input limits text = text[:40000] return text def preprocess_newsgroup_data(newsgroup_dataset): # Put the points into a DataFrame df = pd.DataFrame( { 'Text': newsgroup_dataset.data, 'Label': newsgroup_dataset.target } ) # Clean up the text df['Text'] = df['Text'].apply(preprocess_newsgroup_row) # Match label to target name index df['Class Name'] = df['Label'].map(lambda l: newsgroup_dataset.target_names[l]) return df # Apply preprocessing to training and test datasets df_train = preprocess_newsgroup_data(newgroups_train) df_test = preprocess_newsgroup_data(newgroups_test) df_train.head() def sample_data(df, num_samples, classes_to_keep): # Sample rows, selecting n…

Apprends Vendredi 04-25
type: item
creator: Renise
date: 2025-06-12T20:53:36Z
subject: Français
subject: french-language
description: Je ne sais pas pourquoi, mais les leçons françaises sont un peu difficile aujourd’hui. J’avais des problèmes à écouter et penser en français. Alors, j’ai quittée tôt. Peut être j’essayerai plus tard aujourd’hui. Je n’ai pas pu me concentrer. The post Apprends Vendredi 04-25 first appeared on Renise Black.
encoded: Je ne sais pas pourquoi, mais les leçons françaises sont un peu difficile aujourd’hui. J’avais des problèmes à écouter et penser en français. Alors, j’ai quittée tôt. Peut être j’essayerai plus tard aujourd’hui. Je n’ai pas pu me concentrer. Dernier Articles Apprends Lundi 2025-04-28 Apprends Dimanche 2025-04-27 Apprends Samedi 2025-04-26 The post Apprends Vendredi 04-25 first appeared on Renise Black.