dlkinney + programming   153

Your Coffee Shop Doesn’t Use Two-Phase Commit
As a business, the coffee shop is naturally interested in maximizing order throughput, because more fulfilled orders mean more revenue.
Interestingly, the optimiza- tion for throughput results in a concurrent and asynchronous processing model: when you place your order, the cashier
marks a coffee cup with your order and places it into a queue. This queue is literally a line of coffee cups on top of the espresso machine. The queue decouples the cashier and barista, letting the cashier continue to take orders even when the barista is backed up. It also allows multiple baristas to start servicing the queue if the store gets busy, without impacting the cashier. Asynchronous processing models can be highly efficient but are not without challenges. If the real world writes the best stories, then maybe we can learn something from Starbucks about designing successful asynchronous mes- saging solutions.
architecture  programming  asynchronous  messaging  patterns  ieee 
15 days ago by dlkinney
The C4 model for software architecture
In order to create these maps of your code, we first need a common set of abstractions to create a ubiquitous language that we can use to describe the static structure of a software system. The C4 model considers the static structures of a software system in terms of containers, components and code. And people use the software systems that we build.
architecture  design  diagrams  programming  software  visualization 
6 weeks ago by dlkinney
Functional options for friendly APIs | Dave Cheney
The key difference from the previous example, and in fact all the examples so far, is customisation of the Server is performed not with configuration parameters stored in a structure, but with functions which operate on the Server value itself. As before, the variadic nature of the function’s signature gives us the compact behaviour for the default case. When configuration is required, I pass to NewServer functions which operate on the Server value as an argument. The timeout function simply changes the timeout field of any *Server value passed to it. The tls function is a little more complicated. It takes a *Server value and wraps the original listener value inside a tls.Listener, thereby transforming it into a secure listener.
api  golang  programming  options  configuration  designpatterns 
10 weeks ago by dlkinney
Self-referential functions and the design of options
I've been trying on and off to find a nice way to deal with setting options in a Go package I am writing. Options on a type, that is. The package is intricate and there will probably end up being dozens of options. There are many ways to do this kind of thing, but I wanted one that felt nice to use, didn't require too much API (or at least not too much for the user to absorb), and could grow as needed without bloat. I've tried most of the obvious ways: option structs, lots of methods, variant constructors, and more, and found them all unsatisfactory. After a bunch of trial versions over the past year or so, and a lot of conversations with other Gophers making suggestions, I've finally found one I like. You might like it too. Or you might not, but either way it does show an interesting use of self-referential functions.
api  golang  programming  options  configuration  designpatterns 
10 weeks ago by dlkinney
Inform: Past, Present, Future
Structured programming calls for programs to be organised into modular parts, rather than being one big soup of instructions. Knuth didn’t disagree, but he seems to have felt that this took away from the sense of a program having a narrative, what we might call a linear plot. In older programs, a human reader could often start at the top, see how it begins, what it does, and how it finishes, following its execution in sequence. By contrast, one reason it’s hard to figure out what’s going on in a big modern program is that it’s more like a landscape than a story. It’s an expanse you can wander about in any direction, never being quite sure what is collectively achieved by the too many components, or in what order. This is not to say that structured programming is a bad thing: I believe it’s essential. But it is not self-explanatory.
programming  languages  history  presentations 
10 weeks ago by dlkinney
Finding and fixing software bugs automatically with SapFix and Sapienz – Facebook Code
To address high-firing bugs, SapFix creates patches that either fully or partially revert the code submission that introduced them. For more complex crashes, the system generates patches by drawing from its collection of templated fixes. These templates were automatically harvested from those created by human engineers, based on a pool of past fixes. When previously used human-designed templates don’t fit, SapFix will attempt a mutation-based fix, whereby it performs small code modifications to the abstract syntax tree (AST) of the crash-causing statement, making adjustments to the patch until a potential solution is found.
facebook  ai  artificialintelligence  bug  programming  fixes 
12 weeks ago by dlkinney
The Clean Architecture | 8th Light
The diagram at the top of this article is an attempt at integrating all these architectures into a single actionable idea. The Dependency Rule. The concentric circles represent different areas of software. In general, the further in you go, the higher level the software becomes. The outer circles are mechanisms. The inner circles are policies. The overriding rule that makes this architecture work is The Dependency Rule. This rule says that source code dependencies can only point inwards. Nothing in an inner circle can know anything at all about something in an outer circle. In particular, the name of something declared in an outer circle must not be mentioned by the code in an inner circle. That includes, functions, classes. variables, or any other named software entity. By the same token, data formats used in an outer circle should not be used by an inner circle, especially if those formats are generate by a framework in an outer circle. We don’t want anything in an outer circle to impact the inner circles.
architecture  design  development  programming  software  web  webservice  mobile  ios  android 
september 2018 by dlkinney
joeerl | Messages and Protocols vs Functions and APIs
Most of this post was just thinking out loud - more about state machines for describing APIs is in the appendix of my PhD thesis it’s a system called UBF. The ideas of describing protocols with communicating state machines comes from Tony Hoare’s CSP (Communicating Sequentail Programs). The ideas of wiring up black boxes comes from Flow based Programming (Paul Morrison).
erlang  elixir  joearmstrong  programming  flow  flowbasedprogramming  oop  objectorientedprogramming 
june 2018 by dlkinney
joeerl | Let me try and define what a component or service might be
If there is a fault in how we program Erlang and Elixir it is that we spend too much time thinking about types modules and functions and not enough time thinking about messages and process structure. Systems are made from black boxes talking to each other - to understand the system we have to understand the messaging and the interconnections. How the internals of a black box work is of secondary importance.
erlang  elixir  joearmstrong  programming  oop  objectorientedprogramming 
june 2018 by dlkinney
joeerl | In this posting I want to talk about composabilty
This (flow based programming) is one of those ideas we could (and should) revisit and cast into a modern form. All of this means a bit of a re-think since most frameworks are structured on top of essentially sequential platforms. Really we should be thinking in terms of “black boxes that send and receive messages” and “how to wire up the black boxes” and NOT functions with inputs and outputs, the latter problem is solved. Think - “messages between components” and “what messages do I need in my protocol” NOT “input and output types” and “what functions and modules do I need”
erlang  elixir  flow  flowbasedprogramming  oop  objectorientedprogramming  joearmstrong  programming 
june 2018 by dlkinney
Blog | Documenting Architecture Decisions | Relevance
Each record describes a set of forces and a single decision in response to those forces. Note that the decision is the central piece here, so specific forces may appear in multiple ADRs. We will keep ADRs in the project repository under doc/arch/adr-NNN.md
architecture  design  documentation  programming  patterns  engineering 
may 2018 by dlkinney
The eight rules of good documentation - O'Reilly Media
If useful documentation is so important to the success of projects and developer well-being, why don't all projects have it? The answer, I believe, is that like good code, good documentation is difficult and time consuming to write.In my eyes, there are eight rules that we can follow to produce good documentation: 1) Write documentation that is inviting and clear. 2) Write documentation that is comprehensive, detailing all aspects of the project. 3) Write documentation that is skimmable. 4) Write documentation that offers examples of how to use the software. 5) Write documentation that has repetition, when useful. 6) Write documentstion that is up-to-date. 7) Write documentation that is easy to contribute to. 8) Write documentation that is easy to find
documentation  programming  development  architecture  career 
may 2018 by dlkinney
GDPR - A Practical Guide For Developers - Bozho's tech blog
The regulation is basically a law that must be followed in all European countries (but also applies to non-EU companies that have users in the EU). In this particular case, it applies to companies that are not registered in Europe, but are having European customers. So that’s most companies. I will not go into yet another “12 facts about GDPR” or “7 myths about GDPR” posts/whitepapers, as they are often aimed at managers or legal people. Instead, I’ll focus on what GDPR means for developers.
legal  privacy  programming  security  gdpr  development  business  europe 
may 2018 by dlkinney
Callbacks, synchronous and asynchronous : Havoc's Blog
A synchronous callback is invoked before a function returns, that is, while the API receiving the callback remains on the stack. An example might be: list.foreach(callback); when foreach() returns, you would expect that the callback had been invoked on each element. An asynchronous or deferred callback is invoked after a function returns, or at least on another thread's stack. Mechanisms for deferral include threads and main loops (other names include event loops, dispatchers, executors). Asynchronous callbacks are popular with IO-related APIs, such as socket.connect(callback); you would expect that when connect() returns, the callback may not have been called, since it's waiting for the connection to complete. A given callback should be either always sync or always async, as a documented part of the API contract. Not uncommonly, it may be possible to invoke a callback immediately in some situations (say, data is already available) while the callback needs to be deferred in others (the socket isn't ready yet). The tempting thing is to invoke the callback synchronously when possible, and otherwise defer it. Not a good idea. Because sync and async callbacks have different rules, they create different bugs. It's very typical that the test suite only triggers the callback asynchronously, but then some less-common case in production runs it synchronously and breaks. (Or vice versa.) Requiring application developers to plan for and test both sync and async cases is just too hard, and it's simple to solve in the library: If the callback must be deferred in any situation, always defer it.
programming  asynchronous  design  designpatterns  bestpractices  architecture 
april 2018 by dlkinney
OverTheWire: Wargames
The wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games. To find out more about a certain wargame, just visit its page linked from the menu on the left.
security  games  programming  learning  training 
january 2018 by dlkinney
Breaking Down Type Erasure in Swift
The cornerstone of protocol-oriented programming is writing code against a common contract and avoiding the tight coupling associated with inheritance. Be forewarned though, following this pattern, it’s only a matter of time before you hit the following error: `error: protocol 'MyAwesomeProtocol' can only be used as a generic constraint because it has Self or associated type requirements`. There is a lot going on in this single compiler error. The error references both Swift’s protocol’s associated types as well as Swift’s generic constraints. In this post we’ll start by illustrating the problem in a concrete example. Next we’ll explore generic constraints and protocol associated types in isolation. Finally we’ll apply the type erasure pattern to work around the error.
programming  protocols  swift  generics  associatedtypes  bignerdranch  howto  guides  tutorials 
november 2017 by dlkinney
IBM-Swift/BlueSocket: Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.
Relatively low-level socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.
programming  sockets  internet  ibm  swift  tcp  udp  ios 
august 2017 by dlkinney
Elixir School
Lessons about the Elixir programming language, inspired by Twitter’s Scala School.
elixir  erlang  learning  programming  online  training 
august 2017 by dlkinney
How To Save The Princess In 8 Programming Languages
HOW TO SAVE THE PRINCESS IN 8 PROGRAMMING LANGUAGES. You need to rescue the princess with code - but sometimes your code doesn't work and the princess is a dragon and you're a fish.
programming  humor  fun  comics 
june 2017 by dlkinney
A Year of Teaching Swift — Fraser Speirs
We are nearly at the end of the school year here in Scotland and I wanted to take some time to reflect on the experience of teaching the Computer Science curriculum this year using Swift Playgrounds and Apple's Learn to Code curriculum.
swift  teaching  learning  programming  fraserspeirs 
june 2017 by dlkinney
Complexity and Strategy
In actual practice, if the product stays small, you can essentially “book” that initial productivity gain—a clear win. If the product starts to grow complex—and you can predict that fairly directly by looking at the size of the development team—then costs will come to be dominated by that increasing feature interaction and essential complexity. Project after project has demonstrated there is nothing about language or underlying technical infrastructure that changes that fundamental curve.
programming  languages 
march 2017 by dlkinney
Top mentioned books on stackoverflow.com
We analysed more than 40 000 000 questions and answers on stackoverflow.com to bring you the top of most mentioned books (5720 in total)
development  programming  books  recommendations  software  embedded  c  cpp  c++  java  artificialintelligence  machinelearning  computerscience 
february 2017 by dlkinney
Apollo GraphQL Client | Apollo
Apollo Client. A flexible, fully-featured GraphQL client for every platform. Fully featured. Queries, caching, mutations, optimistic UI, subscriptions, pagination, server-side rendering, prefetching, and more. Compatible. Works with every GraphQL server, 100% of the query spec, and every client-side technology. Production ready. Used in critical production apps today by Credit Karma, NewSpring Church, and others. Community focused. Over 100 contributors and counting. Built by the community, for the community. Tooling friendly. Works with existing GraphQL and Redux tools, and the new Apollo Chrome devtools extension! Flexible. Incrementally adoptable in any architecture so you can get started right away. Compare to other clients.
programming  library  graphql  ios  swift  javascript  android 
january 2017 by dlkinney
Table of Contents · Crafting Interpreters
This may be the beginning of a grand adventure. Programming languages encompass a huge space to explore, play in, and perhaps carve out your own territory where you build something new for others to use. Brilliant computer scientists and software engineers have spent entire careers traversing this land without ever reaching the end. If this book is your first entry into the country, welcome. The pages of this book give you a guided tour through a corner of the world of languages.
programming  languages  dsl  ast  parsing  syntax  book 
january 2017 by dlkinney
Eve is a programming language and IDE based on years of research into building a human-first programming platform. From code embedded in documents to a language without order, it presents an alternative take on what programming could be - one that focuses on us instead of the machine.
programming  languages  ide  swift  playgrounds  learning  education 
november 2016 by dlkinney
Solid CAD modeling in your browser, with a CoffeeScript based syntax (and lots more !) Design Anywhere. Fire up any modern browser (Firefox, Chrome, etc ) anywhere, and start designing! Friendly language. CoffeeSCad , as its name might imply, let's you design 3d content using CoffeeScript a highly intuitive language , that compiles to Javascript, with a syntax similar to Python. Optional online storage. You can also store your designs online (currently supporting Dropbox), so you can access them from any browser, anywhere. Open source. CoffeeSCad is a free and open source software released under the MIT Licence. Export it, print it. CoffeeSCad can export to the stl file format for 3d printing (amongst others) Or export your project's bill of Material to the json file format, for sharing and reuse of designs. More formats to come! Code Editor. CoffeeSCad has a full featured code editor with syntax highlighting, search and replace, multiple files support, code linting (quality indicators) etc.
javascript  coffeescript  3d  browser  cad  design  autocad  programming 
october 2016 by dlkinney
Why you should consider Python for embedded programming | Opensource.com
While C/C++ is slow to write, error prone, and frequently unreadable, Python is known for its writability, error reduction, and readability. The importance of readability can't be overemphasized: when you're working in a team, readability is paramount to maintaining the code. It has to be easily decipherable unless you're willing to shell out more time and money on debugging and quality assurance. The design reuse of Python far outclasses C/C++, and in today's Agile environments design reuse can be the difference between staying ahead or falling behind the competition. Embedded algorithms are getting increasingly complex. Simple control loops are being replaced by neural networks and other heavily-involved processes that have helped Python gain its foothold. There are Python libraries like Theano that will optimize Python code for these processes. While Theano is mostly written in C/C++, Python is used to interface with high-performance libraries in a human-friendly way. Python libraries are thriving—PyPI, the Python package index, has over 80,000 modules, and these massive compendiums dramatically increase the productivity of programmers by giving them the option to skip a few steps and use already-established functions in their own code.
embedded  programming  languages  c  c++  python 
september 2016 by dlkinney
Kate Heddleston - Onboarding and the Cost of Team Debt
At a very high-level, onboarding is the process of taking someone from outside the company and making them an independent, productive, and confident member of the team. Onboarding involves training new employees on the technologies, organizational processes, and team dynamics they need to know to complete their job. Good onboarding will help new employees get up to speed in these areas quickly and efficiently. Onboarding is finished when the nebulous idea of "reliable independence" is achieved, where an employee requires no more resources from coworkers and managers than the average work collaboration.
programming  management  culture 
august 2016 by dlkinney
How to think like an embedded engineer? - embeans
This is a very interesting question. I get this question all the time. What is the difference between embedded software engineers and IT Software developers. So here are the Top 6 Differences according to me. Well there is always a debate – who is the better of the two? I am not going to answer that here as i think a comparison is not fair.
embedded  development  programming  career 
july 2016 by dlkinney
The traits of a proficient programmer - O'Reilly Media
Competence means having enough experience and knowledge to get stuff done; proficiency involves knowing why you are doing something in a certain way, and how it fits into the big picture. In other words, a proficient practitioner is always a competent practitioner, but the opposite may not be true.
career  engineering  programming  hiring  oreilly 
july 2016 by dlkinney
CMSIS Workshop
CMSIS allows the user to create a unified software stack for microcontroller projects.CMSIS-Driver provide an API for commercial and open-source middleware, user application code and external components. They are designed with the requirements of professional middleware in mind: High-speed, event driven; Use of energy modes, DMA, ISR, or other I/O buffers; Co-existence with device specific peripheral HAL. To make the user familiar with the concepts, we have created a set of example projects that run on different target hardware and demonstrate the advantages of using CMSIS-Driver.
arm  keil  programming  tutorials  examples 
june 2016 by dlkinney
Cortex-M Learning Platform
This is a collection of resources that help you to create application software for ARM® Cortex®-M microcontrollers. It covers various topics from getting started to debugging your application and contains links to videos, example projects, application notes, and documentation.
arm  programming  keil 
june 2016 by dlkinney
ARM Development Tools IDE | TrueStudio from Atollic
The best FREE C/C++ IDE for ARM® development. No code size limits. Full commercial quality.
Support for thousands of ARM-based devices. Unlock time saving features such as hard fault analysis, system trace & profiling, static code analysis, and tech support with a low-cost annual subscription.
arm  stm32  embedded  programming  debugging  ide 
march 2016 by dlkinney
CodeCity is an integrated environment for software analysis, in which software systems are visualized as interactive, navigable 3D cities. The classes are represented as buildings in the city, while the packages are depicted as the districts in which the buildings reside. The visible properties of the city artifacts depict a set of chosen software metrics, as in the polymetric views of CodeCrawler.
visualization  programming  3d  software  code  opengl  metrics  quality 
december 2015 by dlkinney
ScriptEd equips students in under-resourced schools with the fundamental coding skills and professional experiences that together create access to careers in technology.
coding  compsci  computerscience  computer  education  programming  teaching  schools 
december 2015 by dlkinney
[swift-evolution] Proposal: Universal dynamic dispatch for method calls
Swift is another case of a hybrid model: its semantics provide predictability between obviously static (structs, enums, and global funcs) and obviously dynamic (classes, protocols, and closures) constructs. A focus of Swift (like Java and Javascript) is to provide an apparently simple programming model. However, Swift also intentionally "cheats" in its global design by mixing in a few tricks to make the dynamic parts of the language optimizable by a static compiler in many common cases, without requiring profiling or other dynamic information.. For example, the Swift compiler can tell if methods in non-public classes are never overridden (and non-public is the default, for a lot of good reasons) - thus treating them as final. This allows eliminating much of the overhead of dynamic dispatch without requiring a JIT. Consider an “app”: because it never needs to have non-public classes, this is incredibly powerful - the design of the swift package manager extends this even further (in principle, not done yet) to external libraries. Further, Swift’s generics provide an a static performance model similar to C++ templates in release builds (though I agree we need to do more to really follow through on this) -- while Swift existentials (values of protocol type) provide a balance by giving a highly dynamic model. The upshot of this is that Swift isn’t squarely in either of the static or dynamic camps: it aims to provide a very predictable performance model (someone writing a bootloader or firmware can stick to using Swift structs and have a simple guarantee of no dynamic overhead or runtime dependence) while also providing an expressive and clean high level programming model - simplifying learning and the common case where programmers don’t care to count cycles. If anything, I’d say that Swift is an “opportunistic” language, in that it provides a very dynamic “default" programming model, where you don’t have to think about the fact that a static compiler is able to transparently provide great performance - without needing the overhead of a JIT. Finally, while it is possible that a JIT compiler might be interesting someday in the Swift space, if we do things right, it will never be “worth it” because programmers will have enough ability to reason about performance at their fingertips. This means that there should be no Java or Javascript-magnitude "performance delta" sitting on the table waiting for a JIT to scoop up. We’ll see how it works out long term, but I think we’re doing pretty well so far. TL;DR: What I’m really getting at is that the old static vs dynamic trope is at the very least only half of the story. You really need to include the compilation model and thus the resultant programmer model into the story, and the programmer model is what really matters, IMHO.
programming  swift  chrislattner  static  compilers  optimization 
december 2015 by dlkinney
ReactiveX - Intro
ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data and/or events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety, concurrent data structures, and non-blocking I/O.
programming  functionalreactiveprogramming 
december 2015 by dlkinney
IBM Swift Sandbox
The IBM Swift Sandbox is an interactive website that lets you write Swift code and execute it in a server environment – on top of Linux! Each sandbox runs on IBM Cloud in a Docker container. In addition, both the latest versions of Swift and its standard library are available for you to use.
languages  sandbox  swift  ibm  programming  website  webapps 
december 2015 by dlkinney
Introducing the IBM Swift Sandbox - Swift
The IBM Swift Sandbox is an interactive website that lets you write Swift code and execute it in a server environment – on top of Linux! Each sandbox runs on IBM Cloud in a Docker container. In addition, both the latest versions of Swift and its standard library are available for you to use.
programming  swift  ibm  website  webapps 
december 2015 by dlkinney
marsrovertechchallenge - Mars Rover Technical Challenge - Google Project Hosting
A squad of robotic rovers are to be landed by NASA on a plateau on Mars. This plateau, which is curiously rectangular, must be navigated by the rovers so that their on board cameras can get a complete view of the surrounding terrain to send back to Earth. A rover's position is represented by a combination of an x and y co-ordinates and a letter representing one of the four cardinal compass points. The plateau is divided up into a grid to simplify navigation. An example position might be 0, 0, N, which means the rover is in the bottom left corner and facing North. In order to control a rover, NASA sends a simple string of letters. The possible letters are 'L', 'R' and 'M'. 'L' and 'R' makes the rover spin 90 degrees left or right respectively, without moving from its current spot. 'M' means move forward one grid point, and maintain the same heading. Assume that the square directly North from (x, y) is (x, y+1).
programming  problems  computerscience  katas  interviewing  google  recruiting 
november 2015 by dlkinney
"Weak, Strong, Unowned, Oh My!" - A Guide to References in Swift — KrakenDev
If you can guarantee  that the reference will not be nil at it's point of use, use unowned. If not, then you should be using weak.
programming  ios  arc  swift  references 
november 2015 by dlkinney
Home — TensorFlow
TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google's Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.
programming  ai  machinelearning  artificialintelligence 
november 2015 by dlkinney
Running Swift code on Android
Apple's Swift has been available for over a year now, and Apple has promised it will be made available under an Open-Source license by the end of 2015. That's great, but can I run Swift code on an Android device today?
programming  android  swift 
october 2015 by dlkinney
Technical Q&A QA1827: Automating Version and Build Numbers Using agvtool
How do I auto-increment my build and version numbers using agvtool? The version and build number keys respectively specify the marketing and internal versions of your application. agvtool is a command-line tool that allows you to automatically increment these numbers to the next highest number or to a specific number. This document provides step-by-step instructions for updating your build and version numbers using agvtool. The "Xcode" and "Command Line" sections indicate the steps to be respectively performed in Xcode and the command line.
programming  ios  commandline  ci  continuousintegration  xcode  macos 
october 2015 by dlkinney
What The Heck Is A Monad | Khanlou.com
There's an everpresent hilarious thread in programming blogs where an author tries to explain what a monad is, starts strong, and then ends up losing everyone with some nonsense about an endofunctor. I'm going to take a crack at it. I'm probably going to fail, and I'm going to prove Soroush's Burrito Law in the process: anyone trying to explain monads is going to fail, even if they account for how hard explaining monads is. A monad is a wrapper for a thing. (It honestly is like a burrito.)
programming  functional  swift  monads  haskell  fp 
october 2015 by dlkinney
Match Me if you can: Swift Pattern Matching in Detail.
Among the new features that Swift offers to Objective-C programmers is one that disguises itself like a boring old man while it offers huge potential for forming elegant solutions to otherwise unwieldy sets of nested branches. I'm, of course talking about the switch statement that many Objective-C programmers probably consider as a clunky syntax device which is most entertaining when used as Duff's Device, yet usually offers little to no advantages over multiple if statements. The Switch statement in Swift can do much more though. In the following tutorial, I will try to explain the various usages for these new features in more detail. I'll mostly ignore those solutions where there's no benefit over how switch works in Objective-C or C. The basics of this post were actually written in July 2014, but so many of my patterns crashed the compiler back then that I postponed writing it until there's better support.
programming  cocoa  swift  patterns  functionalprogramming 
august 2015 by dlkinney
Which Clang Warning Is Generating This Message?
Created by Mattt Thompson, and released under the NCSA License. Source code available on GitHub. Generated from Clang's source code, through a combination of regular expressions, find & replace, and scripting. Like Objective-C and swearing, but can't remember block syntax? There's a site for that, too.
programming  ios  clang  warnings 
august 2015 by dlkinney
[1507.05946] Buzz: An Extensible Programming Language for Self-Organizing Heterogeneous Robot Swarms
Swarm-based primitives allow for the dynamic management of robot teams, and for sharing information globally across the swarm. Self-organization stems from the completely decentralized mechanisms upon which the Buzz run-time platform is based. The language can be extended to add new primitives (thus supporting heterogeneous robot swarms), and its run-time platform is designed to be laid on top of other frameworks, such as Robot Operating System.
robotics  languages  swarm  programming 
july 2015 by dlkinney
mikeash.com: Friday Q&A 2015-05-01: Fuzzing with afl-fuzz
afl-fuzz searches for inputs that make your program behave differently. When it finds such inputs, it then alters them further to see if it can make your program behave even more differently. This lets it cover large chunks of your program's potential execution space without any special knowledge of the structure of the input it expects.
development  programming  fuzzing  debugging  mikeash 
july 2015 by dlkinney
Swift Functors, Applicatives, and Monads in Pictures | mokacoding
This is a translation of Functors, Applicatives, And Monads In Pictures from Haskell into Swift. Despite all the hype about it, Swift is not a functional language. This means that we need to write a bit of extra code to achieve the same results that language like Haskell have with built-in operators. Finally, don't worry if you find the content hard to grasp. I had to read the original version a number of times to wrap my head around it, plus a lot of mess around with the Swift code.
programming  functional  swift  monads  haskell 
july 2015 by dlkinney
Intelligent code collaboration for you & your team. Save time and build better software by using Sourcegraph to browse, search, and review code. It integrates with GitHub and is always free for open source.
programming  github  search  code  codereviews  collaboration 
july 2015 by dlkinney
Teaching App Development with Swift - Swift Education
Teach Students How to Create iOS Apps. Engage students with a project-based curriculum, and guide students in creating iOS apps. Adopt projects and lesson plans to fit your course and different learning styles. Create real apps that teach students Swift, the iOS SDK, and the Apple developer toolset.
development  apple  swift  github  learning  programming  teaching  tutorials 
june 2015 by dlkinney
Create your own app for the iPhone or iPad | PencilCase
Making apps has never been easier. Transform your designs into native apps for the iPhone and iPad in a heartbeat. 100% less coding. Go beyond the prototype. Complete creative control.
development  programming  ios  dragndrop 
april 2015 by dlkinney
hall of api shame: boolean trap
The nice thing working for Trolltech was (among others) learning the principles behind the good API. The article Designing Qt-Style C++ API from Matthias 6 years ago is still a good reading till today. The content itself is now expanded into the wiki page API Design Principles. The major premise behind a good API is rather straightforward: "the code is usually written once but read many times." When writing the code, the developer has the time she needs to look at the API documentation and digest it. When someone else reads the code (for review or bug fix), she may not always have the API documentation handy. While this is just common sense, wait until you finish reading and see why this important fact is still overlooked these days.
api  design  programming  javascript  traps  architecture  code  codereviews 
march 2015 by dlkinney
How to Write Go Code - The Go Programming Language
This document demonstrates the development of a simple Go package and introduces the go tool, the standard way to fetch, build, and install Go packages and commands. The go tool requires you to organize your code in a specific way. Please read this document carefully. It explains the simplest way to get up and running with your Go installation.
programming  code  golang  conventions  idioms  go  tutorials 
february 2015 by dlkinney
Effective Go - The Go Programming Language
To write Go well, it's important to understand its properties and idioms. It's also important to know the established conventions for programming in Go, such as naming, formatting, program construction, and so on, so that programs you write will be easy for other Go programmers to understand. This document gives tips for writing clear, idiomatic Go code. It augments the language specification, the Tour of Go, and How to Write Go Code, all of which you should read first.
golang  idioms  go  programming  conventions 
february 2015 by dlkinney
american fuzzy lop
American fuzzy lop is a security-oriented fuzzer that employs a novel type of compile-time instrumentation and genetic algorithms to automatically discover clean, interesting test cases that trigger new internal states in the targeted binary. This substantially improves the functional coverage for the fuzzed code. The compact synthesized corpora produced by the tool are also useful for seeding other, more labor- or resource-intensive testing regimes down the road.
programming  fuzzing  security 
january 2015 by dlkinney
Channel 9: Videos about the people building Microsoft Products & Services
Channel 9 is a community. We bring forward the people behind our products and connect them with those who use them. We think there is a great future in software and we're excited about it. We want the community to participate in the ongoing conversation. This is the heart of Channel 9. We talk about our work but listen to the customer.
development  programming  video  microsoft  blog  azure  training  tutorials  howto 
january 2015 by dlkinney
Dan McKinley :: Thoughts on the Technical Track
My views on the merits of having a technical track align with those of many people in our industry. Management is a different job, with different skills. They're not necessarily more difficult skills, they're just different. By and large they're unrelated to the day-to-day labor of the people who build technology products. It doesn't make any sense to divert your technical talent into a discipline where they will need to stop doing technical work. (That's in the event that they intend to be effective managers, which I concede might be an unrealistic expectation.) Other people have made this case, so I'll just proceed as if we agree that there must be a way forward for people that are great programmers other than to simply graduate into not programming at all. Having that way forward is an ideal. There is always a gap between our ideals and reality, and we cannot act as though we've solved a problem simply by articulating it.
career  management  business  engineering  programming 
january 2015 by dlkinney
WarSting: A Wi-Fi scanning sword for Hobbits. — Spark Blog
To celebrate the launch of the new Hobbit flick, we made a version of Sting that turns blue near unsecured Wi-Fi networks. And when you slash the sword, Sting will jump on the network, and publish a message: "{YOUR WI-FI NETWORK} has been vanquished!"
wifi  hardware  spark  sparkcore  sparkphoton  programming  hobbit  diy  maker  projects 
january 2015 by dlkinney
Neat Algorithms - Paxos - Will You Harry Me
This is an explanation and demonstration of an extraordinarily neat algorithm called Paxos. Paxos is a family of algorithms for teaching a whole bunch of decidedly unreliable processes to reliably decide on stuff. More formally: it allows a group of unreliable processors to deterministically and safely reach consensus if some certain conditions can be met, while ensuring the group remains consistent if the conditions can’t be met.
distributed  algorithms  programming  locking  networking 
december 2014 by dlkinney
codebender is an online development and collaboration platform for all Arduino users, makers, and engineers out there. It makes it easy for anyone, no matter how novice they are, to program their favorite microcontroller. codebender takes away all the frustration of setting up and maintaining your computer when developing applications for Arduino related hardware. It offers an advanced editor with highlighting, autoformating, and autocompletion. It has an extensive repository of libraries that you can access directly from the editor, as well as a handy compiler with very descriptive output that will help you quickly debug your programs. Your projects are stored on the cloud, so you can access them anytime, from anywhere, and share them with your friends and colleagues. You can even embed your code anywhere on the Internet... on your favorite forum, or your personal blog. codebender supports an ever-growing collection of Arduino platforms.
programming  arduino  cloud  code  ide  development  flora  gemma  adafruit 
december 2014 by dlkinney
XBee Gateway & Device Cloud Programming
The XBee Gateway Application is a Python application that resides on the XBee Gateway. It allows you to connect your XBee modules to Device Cloud, enabling them to upload data to Device Cloud and receive remote text and commands. The XBee Gateway Application is already installed in your XBee Gateway device and is automatically started when the gateway is initialized. Device Cloud is Digi's public cloud platform that allows you to connect any device and communicate in two directions from anywhere. For a complete explanation about Device Cloud, see the Device Cloud documentation. This documentation is available from the Documentation link within the Device Cloud platform, and also available outside of the platform on the Etherios Support page. How does the XBee Gateway Application work? The XBee Gateway and XBee Gateway Application software combination acts as a bridge between your XBee network and Device Cloud. This means that using the capabilities provided by Device Cloud, you can communicate with and manage not just the XBee Gateway, but also all the XBee modules of the network individually. Similarly, all the XBee modules can report data to Device Cloud and store the data there to be retrieved later. Consumer applications, such as web apps, mobile apps, etc., can use Device Cloud web services to retrieve data stored by the XBee modules and represent it in different ways, or talk directly with any of the XBee modules to configure them, activate Digital Input/Output (DIO) lines, etc. The figure illustrates the role of the XBee Gateway and XBee Gateway Application in such a scenario.
xbee  digi  cloud  iot  programming  python  gateway 
december 2014 by dlkinney
Configure XBee nodes for serial I/O
If your XBee nodes will transmit data over a serial line, the next step is to configure the XBee nodes for your ZigBee network to transmit serial data.
xbee  programming  digi  serial  uart 
december 2014 by dlkinney
Digi ESP - Digi International
Digi ESP is an easy-to-use and powerful Integrated Development Environment (IDE) optimized for professional software development on a wide range of Digi product platforms. Combining the complete integration of Digi hardware, software and services, Digi ESP streamlines the overall application design process, whether you are developing embedded software for Digi Embedded Linux and NET+OS®, or customizing applicationspecific functionality using the built-in Python scripting and DIA capabilities of Digi products.
digi  xbee  programming  python  ide 
december 2014 by dlkinney
8 Patterns to Help You Destroy Massive View Controller | Khanlou.com
View controllers become gargantuan because they're doing too many things. Keyboard management, user input, data transformation, view allocation — which of these is really the purview of the view controller? Which should be delegated to other objects? In this post, we'll explore isolating each of these responsiblities into its own object. This will help us sequester bits of complex code, and make our code more readable. In a view controller, these responsibilities might be grouped into #pragma mark sections. When that happens, it's usually time to start thinking about breaking it apart into smaller components.
programming  design  ios  cocoa  uiviewcontroller  patterns 
november 2014 by dlkinney
What We Do and Don't Know about Software Development Effort Estimation
There Is No “Best” Effort Estimation Model or Method. Clients’ Focus on Low Price Is a Major Reason for Effort Overruns. Minimum and Maximum Effort Intervals Are Too Narrow. It’s Easy to Mislead Estimation Work and Hard to Recover from Being Misled. Relevant Historical Data and Checklists Improve Estimation Accuracy. Combining Independent Estimates Improves Estimation Accuracy. Estimates Can Be Harmful.
programming  management  software  estimation  budgets  timelines  effort 
october 2014 by dlkinney
Swiftz is a Swift library for functional programming. It defines purely functional data structures and functions.
programming  functional  swift  fp  functionalprogramming 
august 2014 by dlkinney
defmacro - Functional Programming For The Rest of Us
Consider this article "an accessible guide to FP", a bridge from our imperative minds into the world of FP. Grab a coffee and keep on reading. With any luck your coworkers will start making fun of you for your FP comments in no time.
programming  article  functional  functionalprogramming  introduction 
august 2014 by dlkinney
The reactive manifesto
But now a new architecture has evolved to let developers conceptualize and build applications that satisfy today’s demands. We call these Reactive Applications. This architecture allows developers to build systems that are event-driven, scalable, resilient and responsive: delivering highly responsive user experiences with a real-time feel, backed by a scalable and resilient application stack, ready to be deployed on multicore and cloud computing architectures. The Reactive Manifesto describes these critical traits which are needed for going reactive.
architecture  development  programming  web  scaling 
july 2014 by dlkinney
Elements of Modern C++ Style | Sutter’s Mill
The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: (1) They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart pointer parameters and return values, and functions that return big objects by value. (2) They will be used so pervasively that you’ll probably see them in most code examples. For example, virtually every five-line modern C++ code example will say “auto” somewhere. Use the other great C++11 features too. But get used to these ones first, because these are the pervasive ones that show why C++11 code is clean, safe, and fast – just as clean and safe as code written in any other modern mainstream language, and with C++’s traditional to-the-metal performance as strong as ever.
c++  c++11  programming  modern  style  styleguide 
may 2014 by dlkinney
Sonic Pi
Sonic Pi is an open source programming environment designed to explore and teach programming concepts through the process of creating new sounds. Sonic Pi comes with an associated scheme of work which emphasises the importance of creativity in the learning process and gives users the control to turn their sonic ideas into reality.
raspberrypi  sound  programming  audio  learning  education 
may 2014 by dlkinney
Uncrustify - Source Code Beautifier for C-like languages
Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA
c  c++  cpp  objectivec  style  tools  programming 
march 2014 by dlkinney
« earlier      
per page:    204080120160

related tags

2d  3d  accessibility  activerecord  adafruit  advanced  advice  ai  algorithms  analytics  android  animation  apache  api  apple  arc  architecture  arduino  arm  article  artificialintelligence  associatedtypes  ast  asynchronous  atmel  audio  autocad  automation  avr  azure  bdd  beaglebone  bestpractices  bignerdranch  bitbucket  blocks  blog  book  books  bootstrap  browser  budgets  bug  buildpack  business  c  c++  c++11  cad  calabash  career  challenge  charts  children  chrislattner  chrome  chromium  ci  clang  cli  client  cloud  cocoa  code  codereviews  coding  coffeescript  collaboration  colors  comics  commandline  commercial  compensation  compilers  compsci  computer  computerscience  concurrency  configuration  continuousintegration  controllers  conventions  coordinating  coredata  cpp  creation  crossplatform  cucumber  culture  d3js  data  databases  davidungar  debugging  deployment  design  designpatterns  developer  development  diagrams  digi  distributed  diy  documentation  dragndrop  dsl  e2e  education  effort  electronics  elixir  embedded  emberjs  engineering  erd  erlang  estimation  europe  examples  facebook  fixes  flora  flow  flowbasedprogramming  fonts  fp  fraserspeirs  free  fun  functional  functionalprogramming  functionalreactiveprogramming  fuzzing  games  gateway  gdpr  gem  gemma  gender  generator  generics  girls  git  github  gitignore  go  golang  google  graphics  graphql  graphs  guide  guides  hardware  haskell  heroku  hiring  history  hobbit  howto  html  http  https  humor  i2c  ibm  iconfactory  ide  idioms  ieee  industry  integration  internet  interoperability  interview  interviewing  interviews  introduction  ios  ios6  iot  ipad  iphone  java  javascript  joearmstrong  json  katas  keil  kids  kotlin  language  languages  learning  legal  library  llvm  locking  mac  machinelearning  macos  macruby  maker  management  manycore  mcus  mediating  memorymanagement  messaging  metrics  microsoft  mikeash  mobile  mocks  modern  monads  mongrel2  multicore  multithreading  networking  networks  neuralnetworks  nlp  node  nsattributedstring  objectivec  objectorientedprogramming  online  oop  opengl  opensource  optimization  options  oreilly  packages  parallelcomputing  parsing  patterns  performance  platforms  playgrounds  practice  presentations  privacy  problems  programming  projects  protocols  python  quality  questions  rails  raspberrypi  readme  recommendations  recruiting  reference  references  release  remote  rest  robotics  robots  ruby  runtime  sandbox  scaling  schools  screencasts  sdk  search  security  serial  serif  service  smalltalk  soap  sockets  software  sound  spark  sparkcore  sparkphoton  speech  spi  sql  static  stm32  style  styleguide  swarm  swift  synchronization  syntax  tcp  tdd  teaching  technology  testing  threading  timelines  timeseries  tool  tools  training  traps  tutorials  twitter  typography  uart  udp  uikit  uiviewcontroller  unittests  vectors  versioning  video  visualization  warnings  web  webapps  webhooks  webkit  webservice  website  wifi  women  xbee  xcode  zeromq 

Copy this bookmark: