Responsive Web Design Patterns | This Is Responsive. Responsive Patterns A collection of patterns and modules for responsive designs. Submit a pattern Layout Reflowing Layouts Equal Width Off Canvas Source-Order Shift Lists Grid Block Navigation Single-Level Multi-level Breadcrumbs Pagination Images Responsive Image Techniques Media/Data Video Fluid Video Iframes Tables Charts & Graphs Responsive Chart Forms Basic Forms Text Lettering Fittext Footnotes Responsive Footnotes Modules Carousel Tabs Accordion Messaging Lightbox. Tools Archives. Monitoring Your iOS Traffic There are a number of free ‘sniffer’ tools around, for your PC or Mac, for looking at and changing the network traffic. The venerable Wireshark, Fiddler, and Burpsuite are some of the ones that I have used in the past, and still fire up today. What about your iOS devices though?
What programs are available for these, so you can see what your phone and iPad are sending out and receiving? I wouldn’t want to try and use an iOS version of Wireshark on my phone, not just because it hasn’t been ported to work on iOS, but because viewing all the data and changing it on a small phone screen is just not physically feasible.
I Hate #regions As software consultants, we work in many environments. What’s Wrong with Regions? Microsoft introduced #regions to help organize big files into understandable chunks. Regions are also used to separate private, public, and protected variables, properties, and functions. Cool and Easy HTML with Emmet 1. Pairing Archives. Functional(ish) C# & MVVM: Single-Responsibility and Code-as-Data I’ve spent the last year working in C# and WPF. Over a few blog posts, I have alluded to a particular pattern of structuring code, referring to it as “stateless single responsibility” objects or “stateless SRP” objects. For the purposes of this post I will call the pattern “stateless single responsibility principle” (SSRP) objects.
I’d like to go into a bit more detail about what the pattern is and why I use it. I think it will be simplest to begin with an example problem we might use my pattern to solve, then show how I would do it and explain all the parts. Monitoring Your iOS Traffic There are a number of free ‘sniffer’ tools around, for your PC or Mac, for looking at and changing the network traffic.
What about your iOS devices though? I Hate #regions As software consultants, we work in many environments. What’s Wrong with Regions? Microsoft introduced #regions to help organize big files into understandable chunks. Improving Unit Test Iteration Speed with Rails, Spork, and Resque. I’ve been working on a project using Rails lately, and one of the most challenging things about it has been trying to make the tests run efficiently. Unfortunately, there’s so much setup to get the Rails environment going that simple little unit tests take about 5 seconds to run. Of that 5 seconds, it takes about 4.9 seconds for the Rails environment, and 0.1 second for the test itself. So naturally we want to use tools like Spork that will let us load up much of the common setup, and then just fork() each test to make sure it runs in a “pristine” environment. However, this gets really tricky when you are trying to both maximize how much code is loaded pre-fork() and maximize your ability to iterate on the code while keeping Spork alive.
We found it all too easy to get into a state where just starting up the Rails environment loaded all of our models and controllers, and many of their attendant support classes. So far, so good. These intermittent test failures will not stand, man. I recently spent some time cleaning up a large test suite that had fallen into a bit of disrepair. The project was a Ruby on Rails web application being tested with RSpec and Cucumber. The biggest problem was that various tests would fail intermittently. Some tests would pass consistently when run by themselves, but would frequently fail when the whole suite was run.
Re-running the suite once or twice would often result in all tests passing, so the non-deterministic tests were largely ignored eventually becoming broken windows. In his article on Eradicating Non-Determinism in Tests Martin Fowler writes: Non-deterministic tests have two problems, firstly they are useless, secondly they are a virulent infection that can completely ruin your entire test suite. I am now a firm believer that non-deterministic tests need to be addressed immediately. Unique constraints with random test data The project uses randexp to populate fields in Factory Girl factories. Date changes during the test run. Acceptance testing for hobby projects. I believe strongly in behavior driven development (BDD) and acceptance testing. My standard workflow looks something like: write high-level acceptance testwrite unit test for a componentmake unit test passgo to 2 until acceptance test passes This pattern has served me very well in the professional realm.
However, when I sit down to play with personal game development project, gamebox, acceptance testing and BDD tend to go out the window. I go into “let’s get a dragon in the game” mode. With two kids, a wife, and a home to maintain, my time is always fleeting. As gamebox grew in complexity, I hit a point where a large refactor was required. I finally sat down in the working system and wrote an acceptance test. Save yourself the headache. Shawn Anderson (33 Posts) Maker at Atomic Object. This entry was posted in Development Practices and tagged acceptance testing, testing. RSpec: Thank You for Running My Tests in Random Order. The title of this post says it all. I’m super excited that I now have RSpec configured to run my tests in random order.
Test interactions are gone. Assumptions have been eliminated. The test suite is improved. In early 2012, RSpec added the option to run tests in a random order. Last week (early Agust 2012) I had a good opportunity to try it out with my current project’s test suite. Random ordering revealed three flaws in the test suite, which I’ve since eliminated: Our poor usage of the rspec-set library.Our less-than-optimal usage for Fabrication’s sequence number feature.The assumptions in our system tests’ navigation helpers that are not always true.
We’re using rspec-set to help test some of our modules that simply read records from the database. Fabrication has a nice feature to set up incrementing sequence numbers between fabrications. Test interaction sucks. RSpec, thanks a bunch for running my tests in random order. Read more about RSpec ordering here. Matt Fletcher (73 Posts) Defect Re-use - Getting the Most Out of Mistakes. If you don’t know about a potential problem, you can’t test for it. The more possible defects you know about, the more you can test for, and the better your software will be. At Atomic, I work on several projects at the same time. Not only is this mentally stimulating, making a working day fly by, but it also means I am being exposed to multiple sources of potential errors. If I find a defect in Project #2 that occurs when a window has been scrolled, I can think about whether I tested for that in Project #1.
Thanks also to our open-plan office, even if I’m not working directly on a project, I can overhear talk and comments from the makers working on it — all of which can generate test ideas for the projects I am working on. What if you’re not working on multiple projects? Testing Computer Software has an appendix that describes over 400 bugs, this bug taxonomy has 60 top level categories for a shopping cart. Building the Right Acceptance Tests. Automated acceptance tests are valuable, but they’re also easy to build badly. So to make sure you don’t end up with a frustrating pile of automated headaches, first strive to understand why you’re writing the tests. Specific goals often dictate a different set of tools or approach to your instrumentation around the tests. Done correctly, system tests are a powerful tool that can help you: Think through how a feature is going to work before you start implementing it.Document how your software is supposed to work.
(The best documentation is executable.)Show that your application works as a whole.Explore unknown behavior in third-party services and document your assumptions.Verify that future changes don’t have unintended consequences.Test things you couldn’t test well at other levels. These are all situations where acceptance tests provide particular value. And here are a few tidbits I’ve picked up working through the tough parts of writing acceptance tests. Picking System Testing Tools. ExtJS Unit Testing Using Jasmine. If you want to use Jasmine to unit test your Ext JS 4 application, there are a number of good resources available that can help you get started. Most of these indicate they are for writing unit tests, but few of them seem to focus on isolating the component or class to be tested.
Some even go as far as to show how to load your entire Ext.application for testing. Here I will show what I have done to unit test my Ext JS code using Jasmine. Just as in all of the examples above, you will need to modify the SpecRunner.html that comes with the standalone distribution of Jasmine. But instead of using a real Ext.application or one made specifically for the test, you just need to set the load path (relative to the location of the SpecRunner.html) and wrap the call that starts Jasmine with an Ext.onReady. In addition, if you want to test custom UI widgets you can add an element to the body of the test runner page where you can later render the widget to: Patrick Bacon (44 Posts) Simply Writing Tests Is Not Test Driven Development. There is a common misunderstanding in the software world — simply writing tests is test driven development.
Test driven development (TDD) is about ensuring that your software is functioning, as well as ensuring that the software’s internals are well designed, reusable, and decoupled. What is TDD? Uncle Bob’s 3 basic rules of TDD are: You are not allowed to write any production code unless it is to make a failing unit test pass.You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.You are not allowed to write any more production code than is sufficient to pass the one failing unit test. To summarize Uncle Bob’s rules: Only write code that is tested.Start your tests small, then work your way up.Only write enough production code to make a test pass.
Basics of TDD The basic process of TDD has 3 steps: Red, Green, and Refactor. Red The red step consists of writing a failing test, only one failing test. Green Refactor Benefits of TDD. Your Tests Are Your Conscience. Have you ever inherited a project without any tests? Trying to get a foothold in the code can feel daunting, let alone feeling confident about making changes. I recently took over a project that lacked any tests, and as I began to explore the code, I came to a realization. Despite the fact that the app had known issues and a general air of “bugginess,” the code wasn’t terrible. I’ve seen truly terrible code, and this wasn’t it. No, the realization I came to is that the code was about what you would expect, given that it had no tests.
You can understand your language inside and out. Writing tests exposes the “pain points” in code. Here are just a few “paraphrases” of code problems I saw in the project I inherited, problems I attribute to the lack of tests. Repetition This particular block of code (plus or minus a few key/value pairs) occurs as the last statement in three or four action methods on a controller. This code has a different — but closely related — issue. Spaghetti Code. Beware of Capybara Interacting with Hidden DOM Elements. Due to a project’s integration tests spuriously reporting failures with capybara-webkit on our CI servers, we switched to the capybara-selenium driver.
In the process of switching, we discovered that a number of tests needed to be tweaked or partially rewritten. Why? It turned out that capybara-webkit was allowing us to interact with invisible or hidden DOM elements, but capybara-selenium prohibited this. We realized our tests had been suffering due to being allowed this leniency. Some of the issues stemmed from naughtiness on our part.
For other tests, we discovered there were timing issues related to animations. Regardless, it was an eye-opening experience to realize that our tests were not running at all like we expected. Why Usability Testing Matters: A Newbie's Perspective. As a designer, I’m a perfectionist. I enjoy solving problems, analyzing human intuition, and testing all the available research tools to turn ideas into something viable and realistically executable.
This heuristic, analytical approach to design was what shifted me from advertising into software in the first place. I enjoyed leading creative teams, driving process innovation, managing campaigns, and sharing with and learning from other designers. But ultimately, I didn’t find designing for advertising rewarding. There was something big missing: the dialogue that occurs when the customer interacts and reacts to the work I put in front of them. Working in software, I can test my ideas and get honest feedback — on the spot. User Testing as Validation – The Best Way to Build Confidence Designers are validation junkies. When the client asks you, “How do you know it will work?” It’s all about the ride, not the destination. I see the software interface as a means to an end.
Pair Programming Interviews. September 11, 2013 About Me My name is Parth Upadhyay and I'm a rising senior at the University of Texas at Austin, majoring in Computer Science. This summer, I interned at Square on the Register team. Interviewing At Square When I first started exploring internship opportunities at Square, I didn’t know a lot about the engineering culture at Square—that is until I came in for pair programming interviews. Square's interview, however, was really different. I was confused. Sensing my confusion towards this foreign interview style, he explained that he wanted me to be comfortable coding on the machine so we could actually focus on the problem we would solve, and not have to worry about the cruft surrounding it.
After setting up the environment, I did 3 pairing interviews with 3 different Square engineers. These interviews stood out because I was coding just as I would in the real world. Scrum Tools | Scrumwise - The Most Intuitive Scrum Tool. Given-When-Then. Agile Product Design, holistic product design and agile software development. Design - An Agile approach to User Experience and Design. UX and Agile: Tying the knot. So Agile Together: How designers and programmers can join forces to create great experiences.
Projects & Estimation. 7 Agile Best Practices that You Don’t Need to Follow. XpVelocity.