普通视图

发现新文章,点击刷新页面。
昨天以前首页

Mix Human Expertise With LLM Assistance for Easier Coding

作者 Jon Udell
2024年10月11日 07:37

There are plenty of ways to use LLMs ineffectively. For best results, lean into your own intelligence, experience, and creativity. Delegate the boring and routine stuff to closely supervised assistants whose work you can easily check.

Mix Human Expertise With LLM Assistance for Easier Coding

Part of the LLM series at The New Stack.

Geothermal power in the North Bay

作者 Jon Udell
2024年10月6日 02:42

I was aware of The Geysers, a geothermal field about 35 miles north of my home in Santa Rosa, but I never gave it much thought until my first bike ride through the area. Then I learned a number of interesting things.

It’s the world’s largest geothermal field, producing more than 700 megawatts.

It accounts for 20% of California’s renewable energy.

The naturally-occurring steam was used up almost 30 years ago, and steam is now recharged by pumping in 11 million gallons of sewage effluent daily, through a 42-mile pipeline, from the Santa Rosa plain.

That daily recharge is implicated in the region’s frequent small earthquakes. (But nobody seems too worried about that, and maybe it’s a good thing? Many small better than one big?)

An article in today’s paper reports that AB-1359, signed last week by governor Gavin Newsom, paves the way for new geothermal development in the region that could add 600 megawatts of geothermal production.

How much electric power is that? I like to use WolframAlpha for quick and rough comparisons.

So, 2/3 of a nuke plant. 4/5 of a coal-fired power plant. These kinds of comparisons help me contextualize so many quantitative aspects of our lives. They’re the primary reason I visit WolframAlpha. I wish journalists would use it for that purpose.

Making a Vote Forward checklist

作者 Jon Udell
2024年10月1日 02:08

In How and why to write letters to voters I discussed Vote Forward, my favorite way for those of us who aren’t in swing states to reach out to voters in swing states. The site works really well for adopting batches of voters, and downloading packets of form letters. As I close in on 1000 letters, though, I’m finding it isn’t great for tracking progress at scale. Here’s how my dashboard page looks.

With 50 bundles in play, many of which are farmed out to friends and neighbors who are helping with the project, it’s become cumbersome to keep track of which bundles are prepped (ready to mail) or not. Here is the checklist I needed to see.

VoteForward Dashboard Report

mmorg: 1-UNPREPPED
r23Pp: 2-UNPREPPED
v9Kbo: 3-UNPREPPED
wLMPw: 4-UNPREPPED
24L4o: 5-PREPPED
4nNnj: 6-PREPPED
5rQmV: 7-PREPPED
...
YV4dL: 48-PREPPED
zKjne: 49-PREPPED
ZrKJz: 50-PREPPED

If you’re in the same boat, here’s a piece of code you can use to make your own checklist. It’s gnarly, if you aren’t a programmer I advise you not even to look at it, just copy it, and then paste it into your browser to have it open a new window with your report.

Vote Forward checklist maker (expand to copy)
javascript:(function(){
  // First part: Adjust height of divs with inline styles
  document.querySelectorAll('div[style]').forEach(div => {
    let inlineStyle = div.getAttribute('style');
    if (inlineStyle.includes('position: relative')) {
      div.style.height = '20000px';  // Set the height to 20000px
    }
  });

  // Introduce a delay before processing the list of items
  setTimeout(() => {
    const items = document.querySelectorAll('li.bundle-list-item.individual');

    let dataList = [];

    // Iterate over the items to capture data-testid and ID
    items.forEach(item => {
        let dataTestId = item.getAttribute('data-testid');
        
        // Use the id attribute of the input element to extract the ID
        const toggleInput = item.querySelector('input.slide-out-toggle');
        const toggleId = toggleInput ? toggleInput.getAttribute('id') : '';
        
        // Extract the ID part from the toggleId pattern "toggle-24L4o-PREPPED"
        const id = toggleId ? toggleId.split('-')[1] : 'ID not found';

        // Remove "bundle-" and the number part from dataTestId, keeping only "PREPPED" or "UNPREPPED"
        dataTestId = dataTestId.split('-').pop();  // Extract only the "PREPPED" or "UNPREPPED" part

        // Push the data into the array
        dataList.push({ dataTestId, id });
    });

    // Sort first by whether it's PREPPED or UNPREPPED (descending for UNPREPPED first), 
    // then by the ID within each group
    dataList.sort((a, b) => {
        if (a.dataTestId.includes("PREPPED") && b.dataTestId.includes("UNPREPPED")) {
            return 1;  // UNPREPPED comes before PREPPED
        } else if (a.dataTestId.includes("UNPREPPED") && b.dataTestId.includes("PREPPED")) {
            return -1;
        }
        // Sort by ID if they belong to the same category
        return a.id.localeCompare(b.id);
    });

    // Prepare the output string
    let output = '';
    dataList.forEach((item, index) => {
        output += `${item.id}: ${index + 1}-${item.dataTestId}\n`;
    });

    // Open a new window with the output in a text area for easy copying
    let newWindow = window.open('', '', 'width=500,height=500');
    newWindow.document.write('<html><body><h2>VoteForward Dashboard Report</h2><pre>' + output + '</pre></body></html>');
    newWindow.document.close();
  }, 2000);  // Adjust delay as needed
})();

Here are instructions for Chrome/Edge, Safari, and Firefox. You might need to tell your browser to allow the popup window in which it writes the report.

Chrome/Edge:

  1. Open the VoteForward dashboard in your browser.
  2. Open the developer console:
    • Windows/Linux: Press Ctrl + Shift + J.
    • Mac: Press Cmd + Option + J.
  3. Paste the code into the console.
  4. Press Enter to run the code.

Firefox:

  1. Open the VoteForward dashboard in your browser.
  2. Open the developer console:
    • Windows/Linux: Press Ctrl + Shift + K.
    • Mac: Press Cmd + Option + K.
  3. Paste the code into the console.
  4. Press Enter to run the code.

Safari:

  1. Open the VoteForward dashboard in your browser.
  2. Enable the developer console (if it’s not already enabled):
    • Go to Safari > Preferences.
    • Click the Advanced tab.
    • Check “Show Develop menu in menu bar” at the bottom.
  3. Open the developer console:
    • Press Cmd + Option + C.
  4. Paste the code into the console.
  5. Press Enter to run the code.

It would be nice to have this as a built-in feature of the site but, as we come down to the wire, this may be a helpful workaround.

Thanks, again, to the Vote Forward team for all you do! It’s a great way to encourage voter turnout.

deo absente deum culpa

作者 Jon Udell
2024年9月21日 13:24

On a recent trip I saw this pair of Latin phrases tattooed on the back of a flight attendant’s arms:

Left: Deo absente. Right: Deum culpa.

I took Latin in middle school, and could guess what the combination might mean. It’s not a common construction, and a search seems to confirm my guess. Both Google and Bing take you to a couple of Reddit posts in r/Latin.

Would this be the correct translation?

A song I like, Deus in absentia by Ghost, has that line in it intending to mean “In the absence of God”, so I was looking into alternate translations/syntax of the phrase intending to mean “In the absence of God; Blame/Fault God”. Would this make sense: “Deum in absente; Culpa Deus” or “Deus Culpa”?

Does the phrase “Deus In Absentia, Deus Culpa” make sense?

I’m using this for a tattoo and want to be absolutely sure it works in the sense of ‘In the absence of God, blame God’. All help appreciated!

Is that the same person I saw? If so, the responses in r/Latin seem to have guided them to the final text inked on their arms. And if so, the message is essentially what I had guessed. The intent of the message, though, is open to interpretation. I’m not quite sure how to take it. What do you think it means? Would it have been rude to ask?

SQL translation from Postgres to SQLite and DuckDB

作者 Jon Udell
2024年9月21日 03:59

Powerpipe dashboards can now connect not only to Steampipe but also to SQLite and DuckDB. This creates a combinatorial explosion of possibilities, including dashboards that use SQL to visualize large datasets read from Parquet files by DuckDB.

SQL Translation From Postgres to SQLite and DuckDB

Part of the LLM series at The New Stack.

Revisiting the Elm City project

作者 Jon Udell
2024年9月5日 23:08

“Communities that want to build comprehensive public calendars will be able to do so using a hybrid approach that blends existing iCalendar feeds with feeds synthesized from web calendars. It’s not a perfect solution, but with LLM assistance it’s a workable one. And who knows, maybe if people see what’s possible when information silos converge, the common tools that can ease convergence will seem more attractive.” — An LLM-Turbocharged Community Calendar Reboot

Part of the LLM series at The New Stack.

Building a Steampipe Plugin — and Powerpipe Dashboards — for WordPress

作者 Jon Udell
2024年8月21日 02:31

“Users of the WordPress API may enjoy the abstraction — and standardization — that a SQL interface provides. If you need to query multiple WordPress sites, Steampipe’s connection aggregator will be really handy. And if you want to integrate data from WordPress with data from other APIs wrapped by other plugins in the Steampipe hub, performing literal SQL JOINs across disparate APIs is a heady experience.” — Building a Steampipe Plugin — and Powerpipe Dashboards — for WordPress

Part of the LLM series at The New Stack.

How LLMs Guide Us to a Happy Path for Configuration and Coding

作者 Jon Udell
2024年8月11日 01:21

“Some argue that by aggregating knowledge drawn from human experience, LLMs aren’t sources of creativity, as the moniker “generative” implies, but rather purveyors of mediocrity. Yes and no. There really are very few genuinely novel ideas and methods, and I don’t expect LLMs to produce them. Most creative acts, though, entail novel recombinations of known ideas and methods. Because LLMs radically boost our ability to do that, they are amplifiers of — not threats to — human creativity.” – How LLMs Guide Us to a Happy Path for Configuration and Coding

Part of the LLM series at The New Stack.

When not to LLM

作者 Jon Udell
2024年7月31日 04:21

Here’s the latest installment in the series on working with LLMS: https://thenewstack.io/choosing-when-to-use-or-not-use-llms-as-a-developer/

For certain things, the LLM is a clear win. If I’m looking at an invalid blob of JSON that won’t even parse, there’s no reason to avoid augmentation. My brain isn’t a fuzzy parser — I’m just not wired to see that kind of problem, and that isn’t likely to change with effort and practice. But if there are structural problems with code, I need to think about them before reaching for assistance.

The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

18 Creating a GPT Assistant That Writes Pipeline Tests

19 Using AI to Improve Bad Business Writing

20 Code in Context: How AI Can Help Improve Our Documentation

21 The Future of SQL: Conversational Hands-on Problem Solving

22 Pairing With AI: A Senior Developer’s Journey Building a Plugin

23 How LLMs Can Unite Analog Event Promotion and Digital Calendars

24 Using LLMs to Help Write a Postgres Function

25 Human Insight + LLM Grunt Work = Creative Publishing Solution

How and why to write letters to voters

作者 Jon Udell
2024年7月29日 05:31

If you don’t live in a swing state, but would like to do more than just send money to help encourage voter turnout in those places, what are your options? For me the best one is Vote Forward, which orchestrates letter-writing to registered voters. I sent hundreds of such letters in 2020 and am aiming to do lots more, with help from friends, this time around.

Even if I lived in a swing state, I’m not someone who’d be comfortable knocking on doors. And the last thing I want to do is pester people in those places with yet another unwanted phone call or text message. The Vote Forward method is perfect for me personally, and I also think it’s the most clever and sensible way to encourage voters in other states. Here’s how it works.

You “adopt” voters in batches of 5 or 20. I just adopted my first 100: 20 in each of Ohio, Pennsylvania, Michigan, New Hampshire, and North Carolina. You download each batch as a PDF that prints 21 pages. Page one has the instructions and the list of registered voters’ names and addresses

The fact that you write the letters (and address the envelopes) by hand is a great idea. We receive very few hand-addressed letters nowadays, I think they have a pretty good chance of being opened. And once opened, the hand-written message is again unusual. The fact that somebody made the effort to do that signals a rare kind of authenticity.

Likewise, I think the nonpartisan tone of the message is unusual and conveys authenticity. I wish voting were mandatory in the US, as it is in Australia and elsewhere. However the chips fall in November, I would like to know that the result truly reflects what everyone thinks. My message last time was something like:

“… because it’s not really a democracy unless everyone’s voice is heard.”

Pages 2-21 are the letter templates. They look like this:

The hardest part for me was the handwriting. I famously struggled with cursive writing in fifth grade. By the time I reached high school I had reverted to printing. Then, in college, I realized that cursive is more efficient and relearned how to do it. I had to relearn all over again in 2020 because cursive was the fastest way to write all those letters. And I’ll probably have to relearn again this time. I suspect many in younger generations never learned cursive at all, in which case writing the letters by hand will be even harder. So: keep the message short!

If you’ve received a link to this post directly from me, it’ll come with an invitation to drop by our house, hang out on the porch, and help me complete batches of these letters. Otherwise, I hope you might try this method yourself, and/or share it with others. In the past week I’ve switched from doomscrolling to hopescrolling and that’s a huge relief. But I also want to do something tangible (again, beyond donations) and this will be my focus. It feels good to do the work, and will feel really good when I visit the post office sometime in October and drop off a big stack of hand-addressed envelopes.

But is it effective? That’s another thing I like about Vote Forward. They’ve made a sincere effort to measure the impact. And they are honest about the findings: the measurable effect is small. I’ll give them the last word here.

Why should we get excited about small differences?

Because getting people who don’t vote to show up at the polls (or mail in a ballot) is actually pretty hard. Most of the factors that affect whether people vote are tied to big, structural issues (like voter ID laws or polling place accessibility) or deep-seated attitudes (e.g., a lack of faith that elections matter). Given these obstacles, boosting turnout by even a small amount is a real achievement! And, when it comes to politics, we know that many races are decided by tight margins, so a small boost in turnout can translate into a meaningful difference in electoral outcomes.

Seymour and Brownie

作者 Jon Udell
2024年7月8日 07:12

My family, on my dad’s side, were Jews from Poland and Ukraine. His parents came to America before the shit hit the fan, but I grew up knowing two people who weren’t so lucky. Seymour Mayer lived across the street during my teens. And Annie Braunschweig, who we knew as Brownie, had taken care of my sister and me as four- and five-year-old kids when our mom – unusually at that time – went back to work full-time teaching at a university. Both Seymour and Brownie were survivors of Nazi concentration camps, with tattooed numbers on their arms.

I never heard Seymour talk about it. Brownie rarely did, though I remember one story about a mother who tossed her swaddled baby to a stranger as the train was leaving to take her to the gas chambers.

Very few survivors remain. And there are not many of us who have known survivors. I’ve thought a lot, over the years, about what happens when that kind of personal connection ends, and living memories fall off the continental shelf into the deep ocean of history. I suspect the Holocaust may seem no more real, to many born in this century, than the Spanish Inquisition.

I don’t know if Seymour and Brownie ever read “It Can’t Happen Here” but I am pretty sure they’d have thought it absolutely can, they’d be even more horrified in this moment than many of us are, and they’d reject the fatalism that I see taking root among friends and acquaintances.

“It hasn’t happened yet,” they’d say, “you can still prevent it, do not despair prematurely, there is still time, but you must find a way to focus your efforts and unite all whose votes can matter.”

The things we carry

作者 Jon Udell
2024年7月1日 03:30

For a long time there were only two essential things that I carried everywhere: keys and wallet. Two was a manageable number of objects that I had to remember to put into pockets, and two was a manageable number of pockets to put them in.

Then my first phone bumped that number to three. When reading glasses became the fourth must-carry item, it started to feel like there were too many objects to always remember and too few pockets to put them in. When the seasons changed, or when traveling, it got harder to reset the canonical locations for all four things.

Although I listen to tons of podcasts, headphones never made the list of always-carry items. But when I emptied my pockets the other day I realized that my magic number is now five. AirPods are the new take-everywhere item.

For a while I resisted the recommendation to upgrade from a wired headset to AirPods. Did I really need another small, rechargeable, easy-to-lose object (actually, three of them)? I’ve learned not to expect that yet another electronic gadget will improve my life. But this one has. Dave Winer, you were right.

Obviously this trend can’t continue indefinitely. Will that thing we anachronistically call a “phone” absorb the wallet, and maybe even the keys? I’m not sure how I feel about that!

Meanwhile, there’s my trusty belt pack. It’s dorky but there’s a pocket for everything, and it works consistently across seasons and continents.

Human Insight + LLM Grunt Work = Creative Publishing Solution

作者 Jon Udell
2024年6月26日 23:45

Here’s the latest installment in the series on working with LLMS: https://thenewstack.io/human-insight-llm-grunt-work-creative-publishing-solution/

Although streamlined publishing of screenshots is nice, the biggest win comes from reviewing and revising in Google Docs; which, for better and worse, has become the defacto collaboration standard for many of us.

I am ridiculously pleased with this solution.

The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

18 Creating a GPT Assistant That Writes Pipeline Tests

19 Using AI to Improve Bad Business Writing

20 Code in Context: How AI Can Help Improve Our Documentation

21 The Future of SQL: Conversational Hands-on Problem Solving

22 Pairing With AI: A Senior Developer’s Journey Building a Plugin

23 How LLMs Can Unite Analog Event Promotion and Digital Calendars

24 Using LLMs to Help Write a Postgres Function

Pairing with ChatGPT to help write a Postgres function

作者 Jon Udell
2024年6月13日 08:18

Here’s the latest installment in the series on working with LLMS: https://thenewstack.io/techniques-for-using-llms-to-help-write-a-postgres-function/

It was only after I deployed the function and used it in three different dashboards that the penny finally dropped. This had begun as an exercise to wrap a SQL idiom that made use of the lag() function. But when I looked at the final version of the function, I realized it wasn’t using lag(). Nor was it using dense_rank(). Just row_number() with partition logic was sufficient. Why, I asked ChatGPT, wasn’t that initially obvious?

ChatGPT: The final solution using ROW_NUMBER() and partition logic was not immediately apparent due to a combination of reliance on familiar patterns, the evolving understanding of requirements, and the iterative nature of problem-solving. This process highlights the importance of flexibility and openness to re-evaluating initial approaches to find the simplest and most effective solution.

It’s a good answer that synthesizes wisdom drawn from the human minds represented in the corpus of SQL queries and related conversations that ChatGPT feeds on.

The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

18 Using AI to Improve Bad Business Writing

19 Code in Context: How AI Can Help Improve Our Documentation

20 The Future of SQL: Conversational Hands-on Problem Solving

21 Pairing With AI: A Senior Developer’s Journey Building a Plugin

22 How LLMs Can Unite Analog Event Promotion and Digital Calendars

推荐一款程序员性价比高的机械键盘 KeyChron K8


程序员性价比高的机械键盘 Keychron

我第一款 keychron 键盘是四年前(2020年)买的,当时在AMAZON工作,通过公司经费报销的。当时还问了经理,需要节俭么?因为亚马逊的16条军规中的一条就是节俭/Frugal。当时经理说,只要能提高你的工作效率就行,我也没太敢搞太贵的,最后面只挑了一个60多美元的机械键盘,型号是:

Keychron C2 Wired Mechanical Keyboard, RGB Backlight / Gateron Mechanical / Red

后来这个键盘就一直用到现在(离职AMAZON的时候也不需要还回去),前不久突然C键不能用了,我插拔了好几次也不管用。于是我就死马当活马医,把键盘整个拿去水下冲了,也难得把键一个一个拿下来嫌麻烦,真的就是水洗。不过据说keychron机械键盘每个键有自己独立的电路,可以把备用键换上去,也可以把不常用的键换到有问题的键上。不过年代已久,配送的换键工具还有备用键早就找不到了。

然后晾干一下午,后面又拿了媳妇的吹风机吹了一会儿,插电源,刚开始好用一会儿,屏幕闪跳,然后就彻底不能用了。

不过我又放了两三天,每天都试一下,在最后面就要放弃的时候竟然好用了,C键也好用了,不过后来发现1键不太好用。将就用了几天,新买的K8今天终于到了。机械键盘有很多轴,不同轴价格还不太一样,各种配置,我也不太懂,反正就是选了一个K8最贵的配置,能比基础款贵个30英镑。这个键盘加运费花了110英镑左右。

Keychron K8 Wireless Mechanical Keyboard (US ANSI Layout) × 1

我选的是美式ANSI,和英式差不多,也就是@键和双引号位置的区别,这些可以通过改键盘布局来选择,问题不大。

keychron这个是国产的键盘,质量很可以,我觉得最好用的地方就是可以两用,即可以通过Type-C连接电脑,也可以蓝牙。线缆连接的时候也是充电模式,这个键盘内置电池,续航很久,我以前出去带iPAD平板+这个键盘刷题就很流畅。

我另一个键盘也是四年了,还能用呢,不得不说,这个质量真是不错,这些年很多国产品牌是相当不错,比如那个Anker也是。

keychron-k8-keyboard-2024-06-06-11.22.50-rotated 推荐一款程序员性价比高的机械键盘 KeyChron K8 I.T. 硬件 福利 程序员 键盘

今天收到的keychron k8开箱,还送了几个备用键。

C2全键盘比K8多了一个小键盘。

keychron-k8-keyboard-2024-06-06-12.26.16-rotated 推荐一款程序员性价比高的机械键盘 KeyChron K8 I.T. 硬件 福利 程序员 键盘

下面这个键盘比k8相比多了一个小键盘。

keychron-k8-keyboard-2024-06-06-12.26.23-rotated 推荐一款程序员性价比高的机械键盘 KeyChron K8 I.T. 硬件 福利 程序员 键盘

这个keychron k8的键盘我用了四年多,Shift/Control/N/M键都磨没了。

keychron-k8-shipped-from-china 推荐一款程序员性价比高的机械键盘 KeyChron K8 I.T. 硬件 福利 程序员 键盘

虽然在keychron.uk上下单,但是是从中国寄出来的,大概是8天寄到。

总体来说,我是很喜欢这Keychron机械键盘,特别是K8,一个是上面说到的两用(蓝牙+Type C),一个是可以选择Windows或者是Mac苹果电脑模式。然后就是键还可以发光,可以通过 Option+灯炮键来选择。内置电源4000mAh/毫安时,但平时基本上都是用Type-C接电脑。

有的人喜欢HHKB,但对于我来说, 方向键是必须的,还不太喜欢没有方向键的键盘。keychron k8刚刚好,去掉了小键盘,尺寸也比较小,容易携带。

Keychron键盘发光模式选择 – 刚刚才发现,N年前已经推荐过一样的键盘了,博文都写过一篇一样的。说明两件事:这个键盘确实好,还有就是人老了记性太差了。

Keychron Keyboard Backlight

可以用这个链接+ 5%的折扣码(ZHIHUA下单。程序员唯数不多的爱好之一了,女性朋友也可以收藏起来逢年过节买一个惊喜送送男友/老公。

机械键盘敲击的声音很清脆,触感很强烈,当然不同轴可能会有点不一样的感觉,不过总体来说,很适合程序员写代码,也比较适合玩游戏,比如玩DOTA2

程序员需要一个好键盘

我儿子在测试这键盘/压力测试

英文:What Keyboards Do You Use?
英文:Review: Keychron K8 Wireless Mechanical Keyboard for Software Engineers

本文一共 1211 个汉字, 你数一下对不对.
推荐一款程序员性价比高的机械键盘 KeyChron K8. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 推荐一款程序员性价比高的机械键盘 KeyChron K8 I.T. 硬件 福利 程序员 键盘
The post 推荐一款程序员性价比高的机械键盘 KeyChron K8 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 最后一天在谢大工作 2013年10月,我开始在谢大,也就是 University of Sheffield 工作. 这是个两年的合同, 是在一个欧盟项目下,公司暂时把我借调给大学.我的工作标题 是 Marie Curie Experienced Researcher 简单来说也就是研究员,也就是相当于国内说的 博士后(不是学位,只是份工作). 两年,...
  2. 没有一类银行卡也可以用微信支付 这几年因为微信支付用不了,不知错过了多少红包,估计有几个小目标了吧,最主要原因就是当时上传了身份证,然后就一直要国内一类银行卡,而我长期在英国/海外生活,没有国内手机/银行卡,很是不方便。 TLDR; 在国外的朋友们如果没有国内1类银行卡,微信支付用身份证验证是不能使用的,一个解决方法就是先注销微信支付,然后用(中国)护照人脸验证+绑定英国银行卡(VISA/Master应该都可以,支付几毛钱),通过后就可以使用了。 用身份证进行KYC(Know Your Customer 身份认证)会认为你是在国内 所以需要一类银行卡,用护照就可以绕过这个麻烦的一类银行卡的限制,否则对于长期在海外生活/工作的中国人(依然是中国护照/中国国籍)是很不方便的。 如何注销微信支付? 很不好找:服务,钱包,最下面小字的支付设置,里面就有注销微信支付。注销后过往的消费转帐记录就会清空丢失,记得先截图备份。 用护照人脸/身份认证 不仅是微信支付,微信视频号也需要身份认证,否则就不能上传视频,而且系统有BUG,填完资料后说已经有微信支付了。 “你已经开通微信支付,无法继续操作,请退出流程。” 需实名或机构认证后才可以发表:当前WeChatID没有实名,需完成微信支付实名或企业机构认证后才可以发表 微信支付实名...
  3. 新的旅途 – 离别总是伤感的, 离开了一起创业的公司 2周前, 正式离开了一起创业的公司, 这公司是我博士毕业后的第一份正式工作, 待了8年多了, 离别总是伤感的. 我是9月初提的离职, 三个月 Notice Period, 最后的几周交接完工作确实没有什么压力了. 11月30号, 在公司最后一天, 公司有个习惯, 对于 Good...
  4. 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? 这几天,我发现我的一两个服务器过载(高于平常的CPU使用率),我查看了 Apache 日志,发现 ChatGPT Bot(也称为 GPTBot/1.0)和字节跳动 Bots(也称为 Bytespider)的访问记录。 您可以通过以下 BASH 命令检查访问您服务器的前 10 个 IP: 1...
  5. 终于在北京开通了中信银行一类银行卡 这次回国最重要的事情之一就是办一个一类银行卡,没有这个一类银行卡,微信支付就用不了,但可以通过护照注册接发微信红包。 办银行卡的两个条件就是 二代身份证和国内手机号。身份证我2011年回国办了,有效期到2031年,还有7年时间,相当好用。国内手机号是实名身份证认证的,我姐搞了一张副卡,一个月保号只需要10元。周六联通的人员送SIM卡上门,还需要查看身份证+人脸识别。不得不说,现在国内刷身份证+人脸验证识别是越来越普及了,比如进火车站,坐厦门鼓浪屿轮渡渡船都有体验。 那天周日(周六竟然休息不开业)在家里边上的中信银行(北京)办理银行卡,是店员领着到一柜台机上自助操作的,在屏幕上操作了几分钟,就可以了。不过当时只给了一张日限制2000元的卡,因为没有一年社保的记录,手机号也需要有一年的记录。 后来我姐下午打了电话给银行,然后我从长城打车赶回银行就办好了,日转帐 50万元限制。我到银行4:59分,银行人员那个闸放下来不让我进,我姐打了个电话,然后又把闸拉起来了。我都不知道我姐这么NB,当天就搞定了。我猜因为我姐是银行大客户,所以和银行打声招呼就可以了。当时我还赶到另一个支行,然后,银行直接给那个支行电话,保安才把闸拉起来让我进,还和我不停的道歉,真是体验了一次金主爸爸的待遇。确实是让我吃惊了一把,竟然能有这种操作。 鱼老板说:当时他什么都没有的时候也是只开通了日2000元限制的卡,然后硬是等到3月后办了贷款银行才给开通日50万元的一类银行卡。 我当时申请的时候直接勾选了微信支付+支付宝,一下子支付宝就自动绑卡成功。而微信支付由于之前我是从身份证换成护照,需要解绑重新用身份证注册,也很快就搞定了。 现在,出门,只需要手机就可以了,真是相当的方便。中国的支付技术遥遥领先,不管是微信支付还是支付宝,支付的时候都可以有两种扫码方式,你扫商家,或者商家扫你。还可以直接微信小程序上下单付款。 相比之下,英国的支付大多是银行卡/Apple Pay/Android Pay,苹果/安卓支付其实也不算太差,但是有上限100英镑?接触式 Contactless(闪付)银行卡支付也是,偶尔还会被拒绝(安全因素),所以还做不到出门放心只带手机的地步。在英国出门付款一般都得有Plan B,比如多拿一张银行卡,避免付不了款尴尬的情况发生。 要是英国也有那种商家扫用户QR码这种被动支付的方式就好了。...
  6. 儿子的画 大儿子 ERIC 比我有画画天赋多了. 只要孩子感兴趣 就给培养 让孩子过一个开心快乐的童年. 大儿子 2岁9个月的时候画的 三岁九个月画的爸爸 老大画的 妈妈 本文一共 62 个汉字, 你数一下对不对....
  7. Minuet in C – 小步舞曲C Posted Youtube – 油管地址 孩子弹琴的时候最帅了. 我现在成了我儿子的粉丝了. Eric (Aged 6) is playing “Minuet in C” when...
  8. 上了年纪痛风脚崴了的惨痛经历(尿酸过高) 痛风是一种疼痛性关节炎, 当血液中的尿酸水平高, 导致晶体形成并积聚在关节内或关节周围, 就会发生痛风. 当人体分解一种叫做嘌呤的化学物质时, 就会产生尿酸. 嘌呤自然存在于您的身体中, 也存在于某些食物中. 尿酸通过尿液从体内排出. 上两周, 和媳妇吵架, 然后就自己一人睡, 有一天起床后脚踝就开始疼了, 然后明显比左脚肿了. 我刚开始就以为是睡觉的时候不小心姿势不对,...

The future of SQL: conversational hands-on problem solving

作者 Jon Udell
2024年4月24日 08:06

Here’s the latest installment in the series on working with LLMS: https://thenewstack.io/the-future-of-sql-conversational-hands-on-problem-solving/

I keep returning to the theme of choral explanations (#4 on my list of best practices), and it’s especially relevant in the SQL domain where there are just so many ways to write a query.

Exploring the range of possibilities used to be arduous, time-consuming and hard to justify. Now it’s becoming hard to justify not doing that; optimizations (sometimes major ones) can and do emerge.

The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

18 Using AI to Improve Bad Business Writing

19 Code in Context: How AI Can Help Improve Our Documentation

Code in Context: How AI Can Help Improve Our Documentation

作者 Jon Udell
2024年4月9日 23:19

Here’s the latest installment in the series on working with LLMS: https://thenewstack.io/code-in-context-how-ai-can-help-improve-our-documentation/.

Writing documentation from scratch is as uncommon as writing code from scratch. More typically, you’re updating or expanding or refactoring existing docs. My expectation was that an LLM-powered tool primed with both code and documentation could provide a powerful assist, and Unblocked did.

I don’t know how to measure the boost it gave me. But I do know that I’ll never again want to undertake this kind of project without a tool that can help me assemble the necessary context.


The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

18 Using AI to Improve Bad Business Writing

Creating a GPT Assistant That Writes Pipeline Tests

作者 Jon Udell
2024年2月16日 01:15

Here’s the latest installment in the series on working with LLMS: Creating a GPT Assistant That Writes Pipeline Tests.

Once you get the hang of writing these tests, it’s mostly boilerplate, so I figured my team of assistants could help. I recruited Cody, GitHub Copilot, and Unblocked — with varying degrees of success. Then I realized I hadn’t yet tried creating a GPT. As OpenAI describes them, “GPTs are custom versions of ChatGPT that users can tailor for specific tasks or topics by combining instructions, knowledge, and capabilities.”


The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

17 How to Learn Unfamiliar Software Tools with ChatGPT

How to Learn Unfamiliar Software Tools with ChatGPT

作者 Jon Udell
2024年1月31日 01:40

Here’s the latest installment in the series on working with LLMS: How to Learn Unfamiliar Software Tools with ChatGPT.

Ideally, tools like GeoGebra and Metabase provide interfaces so intuitive that you rarely need to read the docs, and you can learn the software just by poking around in it. In reality, of course, we need those docs — and they still need to be excellent. But now, we’ll extract a new benefit from them. When we can partner with machines that have read the docs, and can look over our shoulders as we try to do the things described in the docs, we’ll turbocharge our ability to dive into unfamiliar software tools and quickly learn how to use them.


The rest of the series:

1 When the rubber duck talks back

2 Radical just-in-time learning

3 Why LLM-assisted table transformation is a big deal

4 Using LLM-Assisted Coding to Write a Custom Template Function

5 Elevating the Conversation with LLM Assistants

6 How Large Language Models Assisted a Website Makeover

7 Should LLMs Write Marketing Copy?

8 Test-Driven Development with LLMs: Never Trust, Always Verify

9 Learning While Coding: How LLMs Teach You Implicitly

10 How LLMs Helped Me Build an ODBC Plugin for Steampipe

11 How to Use LLMs for Dynamic Documentation

12 Let’s talk: conversational software development

13 Using LLMs to Improve SQL Queries

14 Puzzling over the Postgres Query Planner with LLMs

15 7 Guiding Principles for Working with LLMs

16 Learn by Doing: How LLMs Should Reshape Education

❌
❌