为什么我曾经编写 Clojure?
作者曾专业使用 Clojure 五年,最初热爱,最终厌倦,原因相同:无聊。作者无法为无灵魂的企业编写通用的企业代码,但如果能使其变得有趣,就能克服。Clojure、Go、Rust、Zig 等新技术曾让他保持兴趣。作者推测 Clojure 的诞生以及在金融科技领域的较高采用率,都源于高智商工程师的“无聊”。高薪工作需要高智商工程师,但他们容易厌倦,需要智力上的刺激。企业代码编写相对枯燥,金融科技公司允许工程师在代码库中使用“玩具”,以降低员工流失率。
作者曾专业使用 Clojure 五年,最初热爱,最终厌倦,原因相同:无聊。作者无法为无灵魂的企业编写通用的企业代码,但如果能使其变得有趣,就能克服。Clojure、Go、Rust、Zig 等新技术曾让他保持兴趣。作者推测 Clojure 的诞生以及在金融科技领域的较高采用率,都源于高智商工程师的“无聊”。高薪工作需要高智商工程师,但他们容易厌倦,需要智力上的刺激。企业代码编写相对枯燥,金融科技公司允许工程师在代码库中使用“玩具”,以降低员工流失率。
Andrej Karpathy提出的“氛围式编程”——通过语音指令AI助手编写代码,掀起一股热潮。虽然它降低了软件创建门槛,使个人软件开发更容易,并加速原型迭代,但其局限性也显而易见。氛围式编程擅长快速原型设计,但构建健壮的软件仍需扎实的编程基础和专业知识。文章认为,氛围式编程并非软件工程的终结,而是为熟练程序员提供了更快的原型开发工具,最终受益者仍是那些掌握编程技能的人。
ANEMLL是一个开源项目,致力于将大型语言模型(LLM)加速到张量处理器上,首先是苹果神经引擎(ANE)。它提供了一个完整的开源流水线,用于将模型从Hugging Face转换到ANE上的推理。这使得在边缘设备上进行低功耗应用的无缝集成和设备端推理成为可能,确保最大限度的隐私和安全性。目前支持LLaMA 3.1等模型,并提供Swift和Python示例代码以及iOS/macOS应用。
John Friel III (1960-2024) 编写的 MS-DOS 通信程序 QModem 4.51 的源代码现已发布。该版本是 1992 年初的“试驾版”,包含丰富的功能,例如支持多种调制解调器协议、脚本、用户自定义、调制解调器自动配置和主机模式等。 这份历史性代码库对于通信爱好者、复古计算爱好者以及对经典 DOS 通信软件内部工作原理感兴趣的人来说都具有价值。但编译运行需要 Turbo Pascal 5.x/6.0 环境以及其他依赖库,并且需要应对Overlay管理等挑战,难度较大。
本文探讨了在 Tcl 语言中模拟闭包的实现方法。Tcl 本身并不支持闭包,作者通过巧妙地利用命名空间和 TclOO 对象系统,创建了一个可以模拟闭包行为的类。这个类可以捕获外部变量,并在其作用域之外保持有效,从而实现了类似于其他语言中闭包的功能。虽然该实现与 C++ 中的闭包实现略有不同,但它有效地解决了在 Tcl 中使用闭包的问题,并为需要在 Tcl 中使用闭包功能的开发者提供了一种可行方案。
pipask 是 pip 的替代品,它在安装 Python 包之前进行安全检查,以提高安全性。它优先使用 PyPI 元数据,尽量避免下载和执行代码。如果需要执行第三方代码,pipask 会先征求用户同意。所有检查完成后,它会向用户呈现一份格式化的报告,并请求同意。如果用户批准,pipask 会将安装任务交给标准 pip 完成。pipask 执行的检查包括:代码库流行度、包和版本的年龄、已知的漏洞、PyPI 下载次数以及元数据验证等。
作者痴迷于一个简单的网页需求:在多个 HTML 页面中复用相同的头部。他发现解决这个问题的方法很多,但没有一个是纯 HTML 的解决方案。这引发了他的疑问:为什么 HTML 不能像 CSS 或 JavaScript 一样直接导入其他 HTML 文件?他探讨了潜在原因,例如预加载扫描器、异步加载问题、嵌套导入的复杂性、增加网络请求等,并向读者征求意见。
由于JetBrains AI助手免费配额有限,作者开发了一个Kotlin/Ktor应用,将OpenAI、Claude、Gemini等多个LLM API代理成LM Studio和Ollama API,从而在JetBrains IDE中使用。该应用使用无反射特性,构建了GraalVM原生镜像,实现跨平台和快速启动。支持流式聊天,配置简单,支持热重载。
这段代码实现了一个简单的博客生成工具。它读取指定目录下的Markdown文件,利用markdown2库转换为HTML,并根据HTML模板生成静态博客页面。脚本还会生成一个索引页面,列出所有博客文章的标题和链接,方便用户浏览。整个过程自动化完成,简洁高效。
arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与坚持这些价值观的合作伙伴合作。如果你有想法可以为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!
苹果公司正与人工智能初创公司Anthropic合作开发一款名为“vibe-coding”的软件平台,该平台将利用人工智能技术帮助程序员编写、编辑和测试代码。据悉,这款软件是苹果Xcode编程软件的升级版本,集成了Anthropic的Claude Sonnet模型。目前,苹果公司已在内部测试该软件,尚未决定是否公开发布。这一合作标志着人工智能在软件开发领域应用的新篇章,或许将彻底改变程序员的工作方式。
在快速迭代的软件开发中,冗长的PRD文档往往效率低下。Demo驱动开发提供了一种更敏捷的方案:优先构建可交互的Demo原型,快速收集用户和利益相关者的反馈。Demo并非最终产品,而是将抽象概念具象化,方便非技术人员理解并参与讨论。通过简化Demo的创建和访问,并专注于核心功能的反馈,团队可以更高效地迭代产品,最终打造更贴近用户需求的产品。虽然文档仍然重要,但Demo驱动开发在早期阶段能显著提升效率,帮助团队更快地找到方向。
这个项目探索了如何利用Pi0、Lerobot和Rerun训练机器人。它支持Linux系统,并利用Pixi包管理器进行依赖管理。该项目包含相机标定、人体姿态和运动学分析,以及从多视角图像中提取三维关节位置和角度信息,最终目标是将同步的多相机画面转换成机器人可用的关节角度和三维位置数据,用于机器人动作重定向和精细运动技能学习。项目提供了Jupyter Notebook教程,涵盖人体姿态和运动学、身体和手部姿态重定向以及模仿学习和遥操作等内容。
Intel开源了AI火焰图项目,并加入了对Intel Battlemage GPU的支持,能够生成全栈GPU火焰图,从而深入分析游戏性能。文章以GZDoom为例,结合CPU和GPU火焰图,展示了如何利用FlameScope进行性能分析。通过对比CPU和GPU火焰图,可以快速识别性能瓶颈。例如,可以清晰地看到CPU在进行GPU着色器编译时的占用情况,以及GPU在渲染不同场景(例如充满敌人的房间)时的性能表现。虽然目前该工具需要在Linux系统上进行复杂的配置和编译,但其强大的性能分析能力使其成为游戏开发者和性能工程师的利器。
本文介绍了 Elm 语言中如何使用 Test.Distribution 来确保属性测试覆盖有趣的案例。作者通过一个队列实现的例子,演示了如何使用 Test.reportDistribution 生成测试数据的分布报告,以及如何使用 Test.expectDistribution 强制执行期望的分布。这使得开发者可以更精确地控制测试的覆盖率,避免因为测试数据分布不均匀而漏掉重要的测试案例。文章还提到了 Fuzz.examples 和 Fuzz.labelExamples 函数,可以帮助开发者更好地理解和调试测试数据。
本文介绍了一个用Python编写的工具,用于自动验证渐近估计,特别是那些涉及有限个正实数以及加、乘、除、幂运算等算术运算的估计。该工具通过案例分割和线性规划等方法,自动判断不等式是否成立,并提供证明或反例。作者以自身经验为例,展示了该工具的实用性,并展望了未来该工具的改进方向,例如处理更复杂的表达式和集成到现有数学软件平台中。
JDK 25对String类的hashCode函数进行了优化,实现了哈希码的常量折叠。这意味着对于静态不可变的Map,使用String作为键时,性能将显著提升,尤其是在使用String作为键访问不可变Map中的MethodHandle时,性能提升可达8倍以上。该优化通过在内部字段String.hash上添加@Stable注解实现,允许虚拟机在哈希码非零的情况下直接使用缓存的哈希码,从而避免重复计算。虽然零哈希码的情况会影响优化效果,但未来版本有望解决此问题。
Anukari是一款基于完全交互式3D物理模拟的软件合成器和效果处理器。用户可以通过拖放质量和弹簧等物理组件来设计自己的3D乐器或效果器,实时查看和聆听创作成果。它支持MPE,可在DAW中作为插件或独立运行,并利用GPU进行音频处理,实现强大的音频效果和令人惊叹的音效。Anukari现已进入Beta测试阶段,并提供50%的折扣优惠。
BLAST是一个高性能的网页浏览AI服务引擎,提供与OpenAI兼容的API,内置并发和流式处理功能。它可以自动缓存和并行化任务,降低成本并实现交互式延迟。开发者只需简单的`pip install blastai && blastai serve`命令即可本地运行,无需担心超出预算或占用过多内存。通过OpenAI兼容的API,BLAST可以轻松集成到应用程序中,并通过流式处理实时传输浏览器增强型LLM输出。
流行的内存数据存储Redis在经历了一年的闭源尝试后,终于回归开源阵营。此前为了对抗云厂商的竞争,Redis采用了限制性许可证,但这一策略并未奏效,反而催生了Valkey等开源分支。最终,Redis 8在AGPL v3许可证下发布,意图通过开放源码保护自身,并重新与开源社区建立联系。此次事件也反映出开源软件在商业化道路上面临的挑战以及与云厂商之间的微妙关系。
Ubicloud,一个开源的AWS替代方案,为了降低成本,推出了可突发型虚拟机。它们利用Linux cgroups v2技术,在共享CPU资源的基础上,允许虚拟机在负载峰值时临时提升CPU使用率。文章详细介绍了cgroups v2的配置和使用方法,包括cpuset和cpu控制器,以及如何通过虚拟文件系统或systemd进行管理。通过测试,可突发型虚拟机在负载较低时能获得约30%的性能提升,但该提升受限于cgroups v2的微间隔限制。
本文探讨了代码文件组织的两种常见方法:按类型和按上下文。作者通过一个身份访问管理(IAM)系统的例子,比较了这两种方法的优缺点。按类型组织虽然方便查找特定类型的文件,但在理解代码的业务逻辑和维护方面存在不足。而按上下文组织则更清晰地展现了系统的业务流程,便于团队协作和问题排查,更适合大型项目。作者最终认为,最佳选择取决于团队规模、项目特点和工作方式,没有绝对的优劣之分。
本文总结了15个核心Git命令,涵盖了日常开发中常用的版本控制操作。从初始化仓库(`git init`)到克隆远程仓库(`git clone`),从添加文件(`git add`)到提交代码(`git commit`),再到分支管理(`git branch`、`git merge`、`git checkout`)、远程操作(`git pull`、`git push`)以及撤销操作(`git reset`)和临时保存(`git stash`),每个命令都配有清晰的解释和示例,帮助开发者快速上手Git并提高效率。掌握这些命令,将显著提升你的开发效率,减少不必要的错误。
华盛顿大学的一项研究颠覆了编程学习的传统认知。研究发现,学习Python的速度和熟练程度,更多地取决于语言能力和解决问题的能力,而非数学能力。研究人员通过行为测试和脑电图数据,证实了语言能力对编程学习速度的影响,甚至超过了数学能力。这项发现对编程教育和人才选拔具有重要意义,挑战了将编程等同于数学的传统观念,并暗示着女性在编程领域可能被低估了。
NATS消息服务器的商标和市场营销权之争正不断升级。Synadia公司收回NATS项目后,CNCF正试图取消NATS商标。CNCF认为Synadia在2018年捐赠时已放弃所有权利,并要求遵守协议。Synadia则称CNCF未能促进社区参与,其贡献主要来自Synadia自身,并欲将NATS切换到BSL许可证。CNCF反驳称BSL并非开源许可证,并强调维护开源社区价值的立场。双方争议焦点在于NATS项目的归属、商标权以及许可证类型,最终可能导致NATS项目分裂,如同Terraform与OpenTofu的案例。
厌倦了那些臃肿、充满多巴胺陷阱、不断推送“每日条纹”和“正念提醒”的App吗?这款App来了!它启动速度极快,没有启动画面,没有品牌动画,只有纯粹的功能。它支持暗黑模式,不追踪用户数据,内置“无所事事”按钮,完全免费,无需注册登录。它简洁高效,堪称“能用最少功能完成最多事情的App”,是所有过度设计的App的完美反击。
Webflow收购业界领先的JavaScript动画库GreenSock Animation Platform (GSAP),并将其完全免费开放给所有用户,包括此前收费的Club插件。此举旨在降低动画开发门槛,提升网页交互体验。Webflow还对GSAP进行了重大升级,包括对SplitText插件的改进(文件大小减小50%,提升性能,增强可访问性等),简化GSAP插件在Webflow中的集成,以及支持在发布前预览自定义代码。未来,Webflow还将进一步整合GSAP,为用户提供更直观的动画开发体验。
作者讲述了将Yelp庞大Python代码库的制表符全部转换成四个空格的经历。这并非易事,需要处理不一致的缩进、使用Git过滤器强制执行空格、以及应对由此产生的各种问题,例如幻影文件和Git状态变慢。最终,作者成功完成了迁移,并分享了经验教训,包括使用.gitattributes、expand工具以及一些Git技巧。
厌倦了 jq 复杂的 DSL?作者开发了 cljq,一个用 Common Lisp 编写的 jq 替代品。cljq 使用更易于理解的查询操作符 `?`,并提供与 JSONPath 类似的功能,简化了 JSON 数据处理。目前 cljq 仍处于早期阶段,但已具备基本功能,并计划在未来添加更多特性。
IBM考虑将Python集成到z/OS操作系统中。这将类似于REXX在z/OS中的地位,让用户无需额外安装即可使用Python进行各种编程任务,例如Web开发、数据分析和人工智能等。此举将降低IT专业人员上手z/OS的门槛,提高他们的生产力,并促进z/OS与其他平台的互操作性。