• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 2019年2月15日:开源日报第337期

    15 2 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《我有知识我自豪 learn-to-program》
    今日推荐英文原文:《Learning, Coding, & Freelancing as a Dad》
    (这里放日报封面) (检查上述都完成之后,请删掉括号里的字,包括这一句,每天发布时间为早晨8点左右)
    今日推荐开源项目:《我有知识我自豪 learn-to-program》传送门:GitHub链接
    推荐理由:一个推荐给各个等级程序员的编程教程合集。这个合集并不是按照教程顺序分类而是按照适合的程序员水平分类,适合于初学者的当然是 HTML 和 CSS 入门以及 GitHub 的学习之类的基础性知识,而适合于上级者的则是需要一定基础的编程挑战这些,在这里根据水平寻找一些平时没见过的资源补充知识是个好主意。
    今日推荐英文原文:《What Does Your Perfect Career Feel Like?》作者:Aleksey Weyman
    原文链接:https://medium.com/millennial-moderator/what-does-your-perfect-career-feel-like-9e05ef258c09
    推荐理由:理想中的职业生涯究竟是什么样的呢?所有人的理想似乎都有一些共同点

    What Does Your Perfect Career Feel Like?

    When it comes to your perfect career, what do you envision yourself doing? When I first began asking myself this question, I thought I knew the answer, but as I started investigating and learning more about myself, I found that I was quite wrong. This is a natural part of the process- exploring and trying new things until you really come to understand who you are as a person. Everyone’s interests and passions surely vary, but there are a few things that all people who have found their perfect careers have in common:
    • They wake up with a smile on their face, excited for the day ahead
    • Their work doesn’t feel like work because they love doing it so much
    • They are immensely wealthy, both financially and spiritually

    Imagine waking up with a smile on your face, solely because you are absolutely thrilled with the things you’re going to do during the day. You’re excited to make a difference in the world, knowing that your unique talents and abilities are what got you there. You feel an abundance of joy and privilege at your perfect career each day. Maybe you’re the leader of a company, or you’re working amongst a highly effective team to create something you’re passionate about, or maybe you’re an artist and the world adores your art? Your perfect career is something that puts a smile on your face no matter how many times you do it, and this kind of positive, fulfilling lifestyle fuels you to jump out of bed each morning with passion, rather than rolling out of bed and dreading the day ahead. Listen to yourself, listen to what makes you feel good in life, and take massive action.

    Imagine loving what you do so much, that it doesn’t even feel like work. That you are so naturally in tune with your career that you feel honored to be serving your world every single day. That each decision you make comes from a place of passion and curiosity, rather than a place of requirement or pressure. When others ask you how your day at work was, you’re caught off guard because you’ve spent an entire day simply doing that which you love, never once thinking of it as work. You realize that not everybody achieves this level of thinking in life, but you have done it.

    Your perfect career will not only make you extremely happy and fulfilled, but it will make you wealthy beyond your wildest dreams, both financially and spiritually. Every movement you make in your perfect career will cause an explosion of growth for both you and those around you. Your life is operating at peak performance, causing positive energy to radiate from your every being, inspiring others just by them being around you. You don’t have to worry about money, you are so good at your perfect career that money pours itself onto you like a waterfall. You are living your best life, creating anything you want, and life is giving you everything you deserve.

    Imagine how this all could feel for you, in your own life, where you can provide value to the world in your own, unique way. Achieving your perfect career is not an impossible feat, but it does require hard work and determination. Without these barriers of entry, the gardens of success would be far less glamorous, trampled by anyone who wished to enter on a whim.

    Now you must find the tools and resources to get you to this place. For me, years of trying and failing have taught me three key steps to finding my perfect career- my lifes calling. I encourage you to take the time today and truly think about what it is that you want to do in life, and what it is about you, that makes you valuable to others.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年2月14日:开源日报第336期

    14 2 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《对服务器来说有用 How-To-Secure-A-Linux-Server》
    今日推荐英文原文:《Why Solving the Wrong Problem Is Guaranteed to Ruin Your Software Project》

    今日推荐开源项目:《对服务器来说有用 How-To-Secure-A-Linux-Server》传送门:GitHub链接
    推荐理由:这个项目是一个教你如何保护 Linux 服务器的指南。当然了,在使用之前最好先拥有一台 Linux 服务器,它一不教你用 Linux 二不教你关于安全性的方方面面(比如物理方面的)。它能做的就是从访问服务器的方面去强化安全性,兴许有的时候你正需要加强这一点。
    今日推荐英文原文:《Why Solving the Wrong Problem Is Guaranteed to Ruin Your Software Project》作者:Tomer Dicturel
    原文链接:https://medium.com/swlh/why-solving-the-wrong-problem-is-guaranteed-to-ruin-your-software-project-22e8a4defb70
    推荐理由:顾名思义,为什么解决错误的问题会毁掉你的项目

    Why Solving the Wrong Problem Is Guaranteed to Ruin Your Software Project

    If a poorly defined outcome is the №1 reason why software development projects fail, then a close №2 is solving the wrong problem. This is a particularly insidious problem because you might have just spent a few weeks working on little to no sleep and consuming dangerous amounts of caffeine, only to realize that your project has dangerously gone off the rails. You thought you were supposed to solve Problem X, but you were really supposed to solve Problem Y.

    So why does this happen far too frequently in the software development industry? It’s too easy to chalk it up to sheer incompetence (although, admittedly, that does play a role in some cases). No, a better answer might be a lack of proper communication between the different stakeholders in the project.

    In the best of all possible worlds, of course, there would be complete buy-in on the problem being solved by the software project at every level of an organization, and across all different functional units. In other words, the way the CEO views the project is the same way the VP of Marketing sees the project, which is the same way the VP of Operations views the project, and so on, down the line.

    But how often is that the case? The head of marketing may want a product that looks great when photographed for Instagram (but is way less concerned with overall functionality), the CEO may wish to a product that is going to become the new “killer app” of the industry, and the end user — the person who is actually going to be using this product — just wants a new tool to help them do their job better on a daily basis.

    One way to ensure that all team members are on the same page is via a process of incremental ideation. As part of this process, you first identify the core problem, then outline what steps you can take to solve it, and then commit to regular communication with all team members, in order to make sure that you are still addressing the right problem. By regularly interacting with all parties involved via a continuous review process, you can ensure that the project is appropriately adhering to the needs of the end user.

    But here’s the thing — somebody needs to “own” the project. In the agile software world, for example, that’s the “product owner.” It’s the responsibility of that person to ensure that everyone is using the same language to describe what’s needed, and that team members are always asking questions and communicating with each other to ensure that they are really building what they set out to build. Communication needs to be fluid and happen when the need arises, rather than being scheduled in advance.

    In fact, the role of communication and continuous feedback is so important that it is enshrined as the most critical foundational value of the Agile Software Manifesto: “Individuals and Interactions Over Processes and Tools.” If you are valuing individuals and interactions, then you are more likely to meet customer needs. At the very least, you won’t have to face the awkward situation when a client interrupts you at a meeting and says, “But I thought you were going to…”

    Hey! I’m Tomer, an entrepreneur, and a maker. You might know me from Mevee, Crane and Shots, among other products I’ve launched! This article is a part of a more extensive series I’m writing mostly based on my experiences and is mainly made of my and my team’s opinions.

    I hope this helps you to avoid making the same mistakes I did, and remember to keep shipping!
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年2月13日:开源日报第335期

    13 2 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《回想模式 git-history》
    今日推荐英文原文:《Why The World Needs Trustworthy Chatbots》

    今日推荐开源项目:《回想模式 git-history》传送门:GitHub链接
    推荐理由:调查一个 GitHub 上的文件历史需要几步?1.打开浏览器 2.在浏览器中打开文件 3.把 github.com 改成 github.githistory.xyz。这个项目可以让你轻松简单的实现对某个文件的历史进行调查,如果经常使用 GitHub 的话,这玩意可以帮上大忙的。

    今日推荐英文原文:《Why The World Needs Trustworthy Chatbots》作者:Allan Froy
    原文链接:https://towardsdatascience.com/why-the-world-needs-trustworthy-chatbots-aab5db94dbf8
    推荐理由:在人类社会中信任很重要,同样的,对于需要交换信息的机器人,信任同样是是重要的

    Why The World Needs Trustworthy Chatbots

    The notion of trust underpins so much of society, whether we realise it or not. In modern times, trust is driving the success of new decentralised business models. Trust expert, Rachel Botsman, describes how businesses like AirBnB and Uber are thriving in this new collaborative economy. They just wouldn’t exist without trust; it’s what makes them work. All these companies do is facilitate so-called leaps of trust between individuals.

    Human beings have a natural propensity to want to trust others, it’s what drives us forward and is key to relationship building. Our brains are hard-wired, from years of evolution, to make assessments on trust and the trustworthiness of others, and this is ultimately what makes it possible for nearly 8 billion people to co-exist on our planet.

    But, apparently, the bots are coming, so it follows that humans are moving rapidly into a world where we interact with bots on a daily basis. If that’s the case, then how do we build a relationship with those bots and how do we know if we should trust them?

    Why is trust important?

    You might argue that we don’t need to trust the bots that are performing simple tasks. The thing is, we already do. If I ask Alexa to set a timer for 5 minutes, I trust that I will be notified 5 minutes later. If I give my contact details to a bot greeting me on a website, I trust that those details will be passed on to the owners of the site.

    Consider a more complex bot, maybe one with a high-stakes outcome. Bots, in theory, could provide personalised financial advice based on observations from your everyday life. A bot could be trained as an expert financial adviser and make sure you have the right investments, that your next house purchase works for you and that you never miss an upcoming bill. Today, financial advice is a very personal profession. As humans, we put a lot of faith, or trust, in the people who claim to be licensed as financial advisers. So, what would it take for humans to make significant financial decisions based on advice from a bot?

    How do we define trust?

    According to Professor James Davis from Utah State University, there are three required components for building trust.
    • Ability – can you do what I’m expecting of you?
    • Integrity – do we share any common values or beliefs?
    • Benevolence – are you going to act in my best interests?
    So, a human making an assessment of another human for the first time might look at their qualifications and experience to give an indication of their ability. They might find out about interests and personal drivers to get a sense of their values, or their integrity. When it comes to benevolence, this is often much harder to assess without putting the other person to the test. If you like what you see because the answers resonate with you personally then it’s likely that you’re already willing to place some level of trust in the other person. If not, they‘ve just got a bit more work to do to earn your trust.

    But what does any of this have to do with bots? Can you look up the professional qualifications of a bot, or get a sense of their personal interests and drivers? How would you test if a bot is going to act in your own interests?

    Why chatbots fail miserably.

    Most chatbots fail miserably at integrity and benevolence, whilst a large proportion seems to struggle with ability as well. The main problem with chatbot technology is the exponential speed at which it is advancing. The chatbot hype promised personalised in-channel experiences for everyone, but the current technology is really only suited to question and answer or FAQ type interactions. There are technical limitations which many bot creators are not necessarily aware of. Compounding this problem is a plethora of freely available online tools which allow anyone to build their own chatbot.
    It’s really easy to build a chatbot. Unfortunately, it’s also really easy to build a frustrating user experience.
    There is a huge mismatch between user expectation and the technical capability behind many chatbots, which quickly leads to a frustrating user experience.

    Think back to when you last used a chatbot.

    How many times did a bot fail to understand your request, appear to lose its train of thought, forget an answer you literally just gave it or fail to notice the fact that you answered a question with another question?

    How many times did you feel like you were having a conversation?

    I suspect that even if you’ve had a good chatbot experience that you can recall many more poor experiences.

    Unfortunately, there is nothing natural or conversational about interactions with most chatbots in the market today.

    High-stakes chatbots need to communicate like humans.

    To build a financial adviser bot, you can’t get away with these technical flaws. It is imperative that, as a human, you can be happy that the bot is performing the best it can with the data you know it has access to.
    A conversation about money needs to be more natural; it needs to be contextual, it needs to be personal.
    This is where the cutting-edge research in Conversational AI is currently focused. Some of this research is available to the public with companies such as Rasa creating open-source tools for building contextual AI assistants. There is no doubt that the big technology companies are also focusing their efforts in this space and will bring these advances to the masses within the next couple of years. We’re finally making progress in teaching computers how to communicate like humans.

    However, we need to tread carefully on this journey.

    Consider that, to create perceived ability and integrity, programming a bot with a personalised back story would be akin to an actor pretending to be someone they’re not, a salesman deftly adapting his sales tactics on the fly, or even a conman looking legitimate enough to steal your money. Consider how Microsoft’s Tay experiment turned racist when the majority of its training data came from the same belief set.

    AI technology currently doesn’t have a sense of right or wrong and humans can deal with that by putting controls around the data the algorithms can work on. This means there will always be a human bias to any programmed bot which allows us to build in traits which appeal to us as humans.

    We need to take advantage of this level of control to build bots we can trust and accept before we create algorithms that can figure out the concept of trust for themselves.

    The field of Conversational AI is rapidly advancing and is on the cusp of being able to deliver some truly revolutionary experiences that users can trust. There are ethical hurdles to overcome, however, I’m confident we will develop trustworthy digital financial adviser bots that become part of our everyday lives. That day is coming. Trust me, I’m human.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年2月12日:开源日报第334期

    12 2 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《历史再现 windows95》
    今日推荐英文原文:《Coding with empathy》

    今日推荐开源项目:《历史再现 windows95》传送门:GitHub链接
    推荐理由:想要趁着假期怀旧一下兴许是个不错的游戏,玩玩很久以前的经典游戏,或者是看看电影都是不错的选择,或者说可以看看这个项目——古老的操作系统。现在我们使用电脑的时候大部分都是从 Windows7 或者 xp 开始的吧,偶尔去看看那些更之前的项目兴许会是个不错的长见识的机会。

    今日推荐英文原文:《Coding with empathy》作者:Benjamin Johnson
    原文链接:https://medium.com/@benjamin.d.johnson/coding-with-empathy-37a708040f14
    推荐理由:在写代码的时候,别忘了迟早会有别人来看你的代码,别给他们添麻烦了。

    Coding with empathy

    When we forget that code is also for humans to read, we end up with scary codebases that make the future maintainers pull their hair out.

    I’m a big fan of April Wensel and her talks on “compassionate code”. I love how she drives home the point that software engineering is fundamentally about working with other humans. Yes, it is incredibly important that we have technical expertise, but we also need to be experts in collaboration.

    In order to collaborate effectively we need to be engineers that have a high degree of emotional intelligence. And while this certainly means decreasing workplace toxicity, emotional intelligence also extends to the code we write. That’s what we’ll be exploring in this post — writing code with empathy in mind.

    But how can code be empathetic?

    It’s a good question to ask. After all, we often think of empathy as something connected to our interactions with other people, and we think of code as the time when we get to be “purely technical”.

    However, as authors of the code we write, we have an opportunity to practice empathy for our code’s future maintainers. When we write code that takes into account how future maintainers will feel reading it, we approach our job differently. All of a sudden it become less about just getting things to work or pushing out feature after feature. Instead we start to care about maintainability, readability, and simplicity.

    There’s a familiar programming quote from Code For The Maintainer that emphasizes this aspect of empathy (along with a little melodrama).
    Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.
    What I love about this quote is that it taps into our survival instinct to remind us that it’s important to think of the future people that will maintain the code we write today. Sometimes that future maintainer is yourself, sometimes it’s someone you’ve never met. And while it’s rare that the future maintainer is gonna come stalking you with murderous intent, they are still human. It’s vital that we write code that makes their job a joy — not a living hell.

    So how do we write empathetic code?

    A lot of the software industry loves this idea of code being “clean”, first introduced by Robert Martin in his book “Clean Code”. And while I like a ton of these clean coding principles, I think we miss a lot if we only focus on “best practices” or a list rules to make our code “clean” or “unclean”.

    Instead, I think it’s important for us to frame these software “best practices” through the lens of empathy and how they affect the people that consume our code (perhaps other developers using an internal module’s API) or make updates to our code. That way it becomes less of a checklist of things that we “have to do” and more established into the way that we do things.

    Let’s take a quick look at some of these software practices, framed through the lens of empathy:

    Automated Tests

    Tests are a great way to provide long-term safety to a module of code. By automatically verifying that the code works, they serve as one of the first line of defense against costly bugs and regressions. When I open up a file for the first time and see that it has some comprehensive test coverage, I feel complete freedom to make whatever changes I need to — without the fear of breaking things! By contrast, opening a file without any tests can be downright terrifying. When we write tests we’re not only saving our business time and money, we’re making sure that the future maintainer of our code can feel safe about modifying it.

    Consistent styling

    Having a consistent code style goes a long way towards making life easier for future maintainers. Syntax and formatting issues tend to be low-hanging fruit that can usually be automated with tools like ESLint and Prettier (if you’re writing JavaScript, for other languages you might need different tools).

    Having a consistent code style is empathetic because it allows your teammates to understand the code faster. Not forcing them to spend extra brain cycles reading through inconsistently formatted code allows them to focus on what actually matters: the problem they are trying to solve.

    Choosing good variable names

    There’s another quote from “Clean Code” that goes along the lines of “you should name every variable with the same care that you would give to naming your firstborn child”.

    While the metaphor may be a bit hyperbolic, the point still stands: how you name things matters. By spending that extra (often small) effort up-front to choose a descriptive name, you help your team (and your future self) gain context about the code. In the moment we know extra context about why our code is the way it is, so that’s the best time to choose a descriptive variable name to remind future maintainers of that context.

    Adding comments

    If you can’t fit all of the context inside a variable name, leave a helpful comment along with whatever name you chose!

    You might have heard some people say that “code should be self-documenting so comments are unnecessary”. While it is true that we should strive to make our code as clear as possible, a well-placed comment can pack a ton of extra context that you wouldn’t really be able to fit inside a variable.

    I’m a big fan of using comments to explain the why behind the code. We don’t really need to comment that a for loop iterates through the list, but if it’s there to solve a specific edge case it’s helpful to know what that edge case is. Adding a comment can be super valuable when some future developer stumbles across that code and is trying to figure out exactly why it’s in the codebase. That way they know whether it’s safe to delete that code or not.

    Documentation

    A great way to measure the empathy of your codebase is to watch what happens when a new team member comes on board. How long does it take for them to get the app running locally? What types of questions are they asking? What types of things are they “doing wrong” in their first few PRs.

    If you don’t have any new team members coming onboard for a while, put yourself in the shoes of a junior developer starting their first day at your company. What types of things about your codebase would be confusing or unclear?

    One of the best ways to fight unclarity is through a good set of documentation. Having clear, well-written docs about getting the app running or performing certain tasks can go a long way towards making a codebase friendly and inviting instead of unclear and daunting.

    However, docs also have to be written with empathy in mind! Making sure that documentation is extensive enough to provide clarity while not coming across as belittling is a fine balance. One way that I try to assess the clarity of my docs is to “optimize for copy-paste”. Assume that the person reading your documentation is going to copy-paste your examples into their code because they’re trying to solve a complicated problem on a time crunch. Thinking about docs in this way forces you to write examples that are fully fleshed out.

    And many more!

    This is definitely not an exhaustive list of the ways to make our code empathetic. In fact, any of the “best practices” out there could be looked at through the lens of empathy. Take a couple of the best practices that you’re passionate about and think about how they positively impact future maintainers and you’ll see what I’m talking about!

    Conclusion

    At the end of the day, engineering is about communication — we tell the computer what operations to execute, and we tell our teammates what the code is supposed to do. And while the computer doesn’t care about how empathetic our code is, our teammates and future maintainers do. By focusing on empathy in the code we write, we will produce higher quality software as a byproduct.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 175 176 177 178 179 … 262
下一页→

Proudly powered by WordPress