en Student visa holders and New Zealand citizens in Australia and the Coronavirus (COVID-19) crisis? By feedproxy.google.com Published On :: Sun, 19 Apr 2020 20:30:00 +0000 International students who have been in Australia for longer than 12 months who find themselves in financial hardship will be able to access their Australian superannuation. The Government will undertake further engagement with the international education sector who already provide some financial support for international students facing hardship. International students working in supermarkets will have […] The post Student visa holders and New Zealand citizens in Australia and the Coronavirus (COVID-19) crisis? appeared first on Visa Australia - Immigration Lawyers & Registered Migration Agents. Full Article Student Visas aged care Australian welfare payments Coronavirus covid-19 extended hours international students JobKeeper payment new zealand citizens nurses special category subclass 444 subclass 444 visa conditions working hours
en 7 Best WordPress Membership Plugins to Generate Recurring Revenue By feedproxy.google.com Published On :: Fri, 28 Feb 2020 14:55:24 +0000 Do you want to turn your WordPress blog into a membership site? Businesses around the globe use this model to sell their physical products or offer exclusive digital content, and many of them are super successful. CopyBlogger, a site with content marketing lessons, offers premium courses to members and they’re currently an eight-figure business. Meanwhile, the owner of the razor […] Full Article Plugins
en Social Icons Widget 4.0 — Now With a Social Icons Block for Gutenberg Included By feedproxy.google.com Published On :: Tue, 03 Mar 2020 21:07:29 +0000 In 2015 we launched Social Icons Widget by WPZOOM with the intent to provide WordPress users with a simple and easy-to-use widget for adding social links to their websites. With over 100k installs at the moment and continuous positive feedback from the users, it kept us motivated to constantly improve and keep updating this free plugin. Now, to keep the […] Full Article Plugins
en Presence 2.0: Beaver Builder Integration, Dark Skin & More! By feedproxy.google.com Published On :: Wed, 08 Apr 2020 13:05:07 +0000 Great news for the users of Presence — our multipurpose theme. We have finally released the long-awaited 2.0 version, which features major changes and improvements. What’s new in Presence 2.0? Beaver Builder Integration Dark Skin New Demo: Organic Shop New Typography and Colors options in the Customizer New Templates in Page Builder Beaver Builder Integration If you have followed recent […] Full Article Theme Updates
en Jiacheng Yang 2020 Portfolio By feedproxy.google.com Published On :: Sat, 09 May 2020 00:00:00 +0000 Interaction Designer’s 2020 portfolio Full Article awwwards Inspiration Web
en How to Foster Real-Time Client Engagement During Moderated Research By feedproxy.google.com Published On :: Mon, 17 Feb 2020 08:00:00 -0500 When we conduct moderated research, like user interviews or usability tests, for our clients, we encourage them to observe as many sessions as possible. We find when clients see us interview their users, and get real-time responses, they’re able to learn about the needs of their users in real-time and be more active participants in the process. One way we help clients feel engaged with the process during remote sessions is to establish a real-time communication backchannel that empowers clients to flag responses they’d like to dig into further and to share their ideas for follow-up questions. There are several benefits to establishing a communication backchannel for moderated sessions:Everyone on the team, including both internal and client team members, can be actively involved throughout the data collection process rather than waiting to passively consume findings.Team members can identify follow-up questions in real-time which allows the moderator to incorporate those questions during the current session, rather than just considering them for future sessions.Subject matter experts can identify more detailed and specific follow-up questions that the moderator may not think to ask.Even though the whole team is engaged, a single moderator still maintains control over the conversation which creates a consistent experience for the participant.If you’re interested in creating your own backchannel, here are some tips to make the process work smoothly:Use the chat tool that is already being used on the project. In most cases, we use a joint Slack workspace for the session backchannel but we’ve also used Microsoft Teams.Create a dedicated channel like #moderated-sessions. Conversation in this channel should be limited to backchannel discussions during sessions. This keeps the communication consolidated and makes it easier for the moderator to stay focused during the session.Keep communication limited. Channel participants should ask basic questions that are easy to consume quickly. Supplemental commentary and analysis should not take place in the dedicated channel.Use emoji responses. The moderator can add a quick thumbs up to indicate that they’ve seen a question.Introducing backchannels for communication during remote moderated sessions has been a beneficial change to our research process. It not only provides an easy way for clients to stay engaged during the data collection process but also increases the moderator’s ability to focus on the most important topics and to ask the most useful follow-up questions. Full Article Process Research
en Concurrency & Multithreading in iOS By feedproxy.google.com Published On :: Tue, 25 Feb 2020 08:00:00 -0500 Concurrency is the notion of multiple things happening at the same time. This is generally achieved either via time-slicing, or truly in parallel if multiple CPU cores are available to the host operating system. We've all experienced a lack of concurrency, most likely in the form of an app freezing up when running a heavy task. UI freezes don't necessarily occur due to the absence of concurrency — they could just be symptoms of buggy software — but software that doesn't take advantage of all the computational power at its disposal is going to create these freezes whenever it needs to do something resource-intensive. If you've profiled an app hanging in this way, you'll probably see a report that looks like this: Anything related to file I/O, data processing, or networking usually warrants a background task (unless you have a very compelling excuse to halt the entire program). There aren't many reasons that these tasks should block your user from interacting with the rest of your application. Consider how much better the user experience of your app could be if instead, the profiler reported something like this: Analyzing an image, processing a document or a piece of audio, or writing a sizeable chunk of data to disk are examples of tasks that could benefit greatly from being delegated to background threads. Let's dig into how we can enforce such behavior into our iOS applications. A Brief History In the olden days, the maximum amount of work per CPU cycle that a computer could perform was determined by the clock speed. As processor designs became more compact, heat and physical constraints started becoming limiting factors for higher clock speeds. Consequentially, chip manufacturers started adding additional processor cores on each chip in order to increase total performance. By increasing the number of cores, a single chip could execute more CPU instructions per cycle without increasing its speed, size, or thermal output. There's just one problem... How can we take advantage of these extra cores? Multithreading. Multithreading is an implementation handled by the host operating system to allow the creation and usage of n amount of threads. Its main purpose is to provide simultaneous execution of two or more parts of a program to utilize all available CPU time. Multithreading is a powerful technique to have in a programmer's toolbelt, but it comes with its own set of responsibilities. A common misconception is that multithreading requires a multi-core processor, but this isn't the case — single-core CPUs are perfectly capable of working on many threads, but we'll take a look in a bit as to why threading is a problem in the first place. Before we dive in, let's look at the nuances of what concurrency and parallelism mean using a simple diagram: In the first situation presented above, we observe that tasks can run concurrently, but not in parallel. This is similar to having multiple conversations in a chatroom, and interleaving (context-switching) between them, but never truly conversing with two people at the same time. This is what we call concurrency. It is the illusion of multiple things happening at the same time when in reality, they're switching very quickly. Concurrency is about dealing with lots of things at the same time. Contrast this with the parallelism model, in which both tasks run simultaneously. Both execution models exhibit multithreading, which is the involvement of multiple threads working towards one common goal. Multithreading is a generalized technique for introducing a combination of concurrency and parallelism into your program. The Burden of Threads A modern multitasking operating system like iOS has hundreds of programs (or processes) running at any given moment. However, most of these programs are either system daemons or background processes that have very low memory footprint, so what is really needed is a way for individual applications to make use of the extra cores available. An application (process) can have many threads (sub-processes) operating on shared memory. Our goal is to be able to control these threads and use them to our advantage. Historically, introducing concurrency to an app has required the creation of one or more threads. Threads are low-level constructs that need to be managed manually. A quick skim through Apple's Threaded Programming Guide is all it takes to see how much complexity threaded code adds to a codebase. In addition to building an app, the developer has to: Responsibly create new threads, adjusting that number dynamically as system conditions change Manage them carefully, deallocating them from memory once they have finished executing Leverage synchronization mechanisms like mutexes, locks, and semaphores to orchestrate resource access between threads, adding even more overhead to application code Mitigate risks associated with coding an application that assumes most of the costs associated with creating and maintaining any threads it uses, and not the host OS This is unfortunate, as it adds enormous levels of complexity and risk without any guarantees of improved performance. Grand Central Dispatch iOS takes an asynchronous approach to solving the concurrency problem of managing threads. Asynchronous functions are common in most programming environments, and are often used to initiate tasks that might take a long time, like reading a file from the disk, or downloading a file from the web. When invoked, an asynchronous function executes some work behind the scenes to start a background task, but returns immediately, regardless of how long the original task might takes to actually complete. A core technology that iOS provides for starting tasks asynchronously is Grand Central Dispatch (or GCD for short). GCD abstracts away thread management code and moves it down to the system level, exposing a light API to define tasks and execute them on an appropriate dispatch queue. GCD takes care of all thread management and scheduling, providing a holistic approach to task management and execution, while also providing better efficiency than traditional threads. Let's take a look at the main components of GCD: What've we got here? Let's start from the left: DispatchQueue.main: The main thread, or the UI thread, is backed by a single serial queue. All tasks are executed in succession, so it is guaranteed that the order of execution is preserved. It is crucial that you ensure all UI updates are designated to this queue, and that you never run any blocking tasks on it. We want to ensure that the app's run loop (called CFRunLoop) is never blocked in order to maintain the highest framerate. Subsequently, the main queue has the highest priority, and any tasks pushed onto this queue will get executed immediately. DispatchQueue.global: A set of global concurrent queues, each of which manage their own pool of threads. Depending on the priority of your task, you can specify which specific queue to execute your task on, although you should resort to using default most of the time. Because tasks on these queues are executed concurrently, it doesn't guarantee preservation of the order in which tasks were queued. Notice how we're not dealing with individual threads anymore? We're dealing with queues which manage a pool of threads internally, and you will shortly see why queues are a much more sustainable approach to multhreading. Serial Queues: The Main Thread As an exercise, let's look at a snippet of code below, which gets fired when the user presses a button in the app. The expensive compute function can be anything. Let's pretend it is post-processing an image stored on the device. import UIKit class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { compute() } private func compute() -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } At first glance, this may look harmless, but if you run this inside of a real app, the UI will freeze completely until the loop is terminated, which will take... a while. We can prove it by profiling this task in Instruments. You can fire up the Time Profiler module of Instruments by going to Xcode > Open Developer Tool > Instruments in Xcode's menu options. Let's look at the Threads module of the profiler and see where the CPU usage is highest. We can see that the Main Thread is clearly at 100% capacity for almost 5 seconds. That's a non-trivial amount of time to block the UI. Looking at the call tree below the chart, we can see that the Main Thread is at 99.9% capacity for 4.43 seconds! Given that a serial queue works in a FIFO manner, tasks will always complete in the order in which they were inserted. Clearly the compute() method is the culprit here. Can you imagine clicking a button just to have the UI freeze up on you for that long? Background Threads How can we make this better? DispatchQueue.global() to the rescue! This is where background threads come in. Referring to the GCD architecture diagram above, we can see that anything that is not the Main Thread is a background thread in iOS. They can run alongside the Main Thread, leaving it fully unoccupied and ready to handle other UI events like scrolling, responding to user events, animating etc. Let's make a small change to our button click handler above: class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { DispatchQueue.global(qos: .userInitiated).async { [unowned self] in self.compute() } } private func compute() -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } Unless specified, a snippet of code will usually default to execute on the Main Queue, so in order to force it to execute on a different thread, we'll wrap our compute call inside of an asynchronous closure that gets submitted to the DispatchQueue.global queue. Keep in mind that we aren't really managing threads here. We're submitting tasks (in the form of closures or blocks) to the desired queue with the assumption that it is guaranteed to execute at some point in time. The queue decides which thread to allocate the task to, and it does all the hard work of assessing system requirements and managing the actual threads. This is the magic of Grand Central Dispatch. As the old adage goes, you can't improve what you can't measure. So we measured our truly terrible button click handler, and now that we've improved it, we'll measure it once again to get some concrete data with regards to performance. Looking at the profiler again, it's quite clear to us that this is a huge improvement. The task takes an identical amount of time, but this time, it's happening in the background without locking up the UI. Even though our app is doing the same amount of work, the perceived performance is much better because the user will be free to do other things while the app is processing. You may have noticed that we accessed a global queue of .userInitiated priority. This is an attribute we can use to give our tasks a sense of urgency. If we run the same task on a global queue of and pass it a qos attribute of background , iOS will think it's a utility task, and thus allocate fewer resources to execute it. So, while we don't have control over when our tasks get executed, we do have control over their priority. A Note on Main Thread vs. Main Queue You might be wondering why the Profiler shows "Main Thread" and why we're referring to it as the "Main Queue". If you refer back to the GCD architecture we described above, the Main Queue is solely responsible for managing the Main Thread. The Dispatch Queues section in the Concurrency Programming Guide says that "the main dispatch queue is a globally available serial queue that executes tasks on the application’s main thread. Because it runs on your application’s main thread, the main queue is often used as a key synchronization point for an application." The terms "execute on the Main Thread" and "execute on the Main Queue" can be used interchangeably. Concurrent Queues So far, our tasks have been executed exclusively in a serial manner. DispatchQueue.main is by default a serial queue, and DispatchQueue.global gives you four concurrent dispatch queues depending on the priority parameter you pass in. Let's say we want to take five images, and have our app process them all in parallel on background threads. How would we go about doing that? We can spin up a custom concurrent queue with an identifier of our choosing, and allocate those tasks there. All that's required is the .concurrent attribute during the construction of the queue. class ViewController: UIViewController { let queue = DispatchQueue(label: "com.app.concurrentQueue", attributes: .concurrent) let images: [UIImage] = [UIImage].init(repeating: UIImage(), count: 5) @IBAction func handleTap(_ sender: Any) { for img in images { queue.async { [unowned self] in self.compute(img) } } } private func compute(_ img: UIImage) -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } Running that through the profiler, we can see that the app is now spinning up 5 discrete threads to parallelize a for-loop. Parallelization of N Tasks So far, we've looked at pushing computationally expensive task(s) onto background threads without clogging up the UI thread. But what about executing parallel tasks with some restrictions? How can Spotify download multiple songs in parallel, while limiting the maximum number up to 3? We can go about this in a few ways, but this is a good time to explore another important construct in multithreaded programming: semaphores. Semaphores are signaling mechanisms. They are commonly used to control access to a shared resource. Imagine a scenario where a thread can lock access to a certain section of the code while it executes it, and unlocks after it's done to let other threads execute the said section of the code. You would see this type of behavior in database writes and reads, for example. What if you want only one thread writing to a database and preventing any reads during that time? This is a common concern in thread-safety called Readers-writer lock. Semaphores can be used to control concurrency in our app by allowing us to lock n number of threads. let kMaxConcurrent = 3 // Or 1 if you want strictly ordered downloads! let semaphore = DispatchSemaphore(value: kMaxConcurrent) let downloadQueue = DispatchQueue(label: "com.app.downloadQueue", attributes: .concurrent) class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { for i in 0..<15 { downloadQueue.async { [unowned self] in // Lock shared resource access semaphore.wait() // Expensive task self.download(i + 1) // Update the UI on the main thread, always! DispatchQueue.main.async { tableView.reloadData() // Release the lock semaphore.signal() } } } } func download(_ songId: Int) -> Void { var counter = 0 // Simulate semi-random download times. for _ in 0..<Int.random(in: 999999...10000000) { counter += songId } } } Notice how we've effectively restricted our download system to limit itself to k number of downloads. The moment one download finishes (or thread is done executing), it decrements the semaphore, allowing the managing queue to spawn another thread and start downloading another song. You can apply a similar pattern to database transactions when dealing with concurrent reads and writes. Semaphores usually aren't necessary for code like the one in our example, but they become more powerful when you need to enforce synchronous behavior whille consuming an asynchronous API. The above could would work just as well with a custom NSOperationQueue with a maxConcurrentOperationCount, but it's a worthwhile tangent regardless. Finer Control with OperationQueue GCD is great when you want to dispatch one-off tasks or closures into a queue in a 'set-it-and-forget-it' fashion, and it provides a very lightweight way of doing so. But what if we want to create a repeatable, structured, long-running task that produces associated state or data? And what if we want to model this chain of operations such that they can be cancelled, suspended and tracked, while still working with a closure-friendly API? Imagine an operation like this: This would be quite cumbersome to achieve with GCD. We want a more modular way of defining a group of tasks while maintaining readability and also exposing a greater amount of control. In this case, we can use Operation objects and queue them onto an OperationQueue, which is a high-level wrapper around DispatchQueue. Let's look at some of the benefits of using these abstractions and what they offer in comparison to the lower-level GCI API: You may want to create dependencies between tasks, and while you could do this via GCD, you're better off defining them concretely as Operation objects, or units of work, and pushing them onto your own queue. This would allow for maximum reusability since you may use the same pattern elsewhere in an application. The Operation and OperationQueue classes have a number of properties that can be observed, using KVO (Key Value Observing). This is another important benefit if you want to monitor the state of an operation or operation queue. Operations can be paused, resumed, and cancelled. Once you dispatch a task using Grand Central Dispatch, you no longer have control or insight into the execution of that task. The Operation API is more flexible in that respect, giving the developer control over the operation's life cycle. OperationQueue allows you to specify the maximum number of queued operations that can run simultaneously, giving you a finer degree of control over the concurrency aspects. The usage of Operation and OperationQueue could fill an entire blog post, but let's look at a quick example of what modeling dependencies looks like. (GCD can also create dependencies, but you're better off dividing up large tasks into a series of composable sub-tasks.) In order to create a chain of operations that depend on one another, we could do something like this: class ViewController: UIViewController { var queue = OperationQueue() var rawImage = UIImage? = nil let imageUrl = URL(string: "https://example.com/portrait.jpg")! @IBOutlet weak var imageView: UIImageView! let downloadOperation = BlockOperation { let image = Downloader.downloadImageWithURL(url: imageUrl) OperationQueue.main.async { self.rawImage = image } } let filterOperation = BlockOperation { let filteredImage = ImgProcessor.addGaussianBlur(self.rawImage) OperationQueue.main.async { self.imageView = filteredImage } } filterOperation.addDependency(downloadOperation) [downloadOperation, filterOperation].forEach { queue.addOperation($0) } } So why not opt for a higher level abstraction and avoid using GCD entirely? While GCD is ideal for inline asynchronous processing, Operation provides a more comprehensive, object-oriented model of computation for encapsulating all of the data around structured, repeatable tasks in an application. Developers should use the highest level of abstraction possible for any given problem, and for scheduling consistent, repeated work, that abstraction is Operation. Other times, it makes more sense to sprinkle in some GCD for one-off tasks or closures that we want to fire. We can mix both OperationQueue and GCD to get the best of both worlds. The Cost of Concurrency DispatchQueue and friends are meant to make it easier for the application developer to execute code concurrently. However, these technologies do not guarantee improvements to the efficiency or responsiveness in an application. It is up to you to use queues in a manner that is both effective and does not impose an undue burden on other resources. For example, it's totally viable to create 10,000 tasks and submit them to a queue, but doing so would allocate a nontrivial amount of memory and introduce a lot of overhead for the allocation and deallocation of operation blocks. This is the opposite of what you want! It's best to profile your app thoroughly to ensure that concurrency is enhancing your app's performance and not degrading it. We've talked about how concurrency comes at a cost in terms of complexity and allocation of system resources, but introducing concurrency also brings a host of other risks like: Deadlock: A situation where a thread locks a critical portion of the code and can halt the application's run loop entirely. In the context of GCD, you should be very careful when using the dispatchQueue.sync { } calls as you could easily get yourself in situations where two synchronous operations can get stuck waiting for each other. Priority Inversion: A condition where a lower priority task blocks a high priority task from executing, which effectively inverts their priorities. GCD allows for different levels of priority on its background queues, so this is quite easily a possibility. Producer-Consumer Problem: A race condition where one thread is creating a data resource while another thread is accessing it. This is a synchronization problem, and can be solved using locks, semaphores, serial queues, or a barrier dispatch if you're using concurrent queues in GCD. ...and many other sorts of locking and data-race conditions that are hard to debug! Thread safety is of the utmost concern when dealing with concurrency. Parting Thoughts + Further Reading If you've made it this far, I applaud you. Hopefully this article gives you a lay of the land when it comes to multithreading techniques on iOS, and how you can use some of them in your app. We didn't get to cover many of the lower-level constructs like locks, mutexes and how they help us achieve synchronization, nor did we get to dive into concrete examples of how concurrency can hurt your app. We'll save those for another day, but you can dig into some additional reading and videos if you're eager to dive deeper. Building Concurrent User Interfaces on iOS (WWDC 2012) Concurrency and Parallelism: Understanding I/O Apple's Official Concurrency Programming Guide Mutexes and Closure Capture in Swift Locks, Thread Safety, and Swift Advanced NSOperations (WWDC 2015) NSHipster: NSOperation Full Article Code
en African American Women Leading in Tech By feedproxy.google.com Published On :: Tue, 25 Feb 2020 08:05:00 -0500 “Close your eyes and name three people who have impacted the tech industry.”In all likelihood, that list might be overwhelmingly white and male. And you are not alone. Numerous lists online yielded the same results. In recent years, many articles have chronicled the dearth of diversity in tech. Studies have shown the ways in which venture capital firms have systematically underestimated and undervalued innovation coming particularly from women of color. In 2016 only 88 tech startups were led by African American women, in 2018 this number had climbed to a little over 200. Between 2009 and 2017, African American women raised $289MM in venture/angel funding. For perspective, this only represents .0006% of the $424.7B in total tech venture funding raised in that same time frame. In 2018, only 34 African American women had ever raised more than a million in venture funding. When it comes to innovation, it is not unusual for financial value to be the biggest predictor of what is considered innovative. In fact, a now largely controversial list posted by Forbes of America’s most innovative leaders in the fall of 2019 featured 99 men and one woman. Ironically, what was considered innovative was, in fact, very traditional in its presentation. The criteria used for the list was “media reputation for innovation,” social connections, a track record for value creation, and investor expectations for value creation. The majority of African American women-led startups raise $42,000 from largely informal networks. Criteria weighted on the side of ‘track record for value creation’ and ‘investor expectations for value creation’ devalues the immense contributions of African American women leading the charge on thoughtful and necessary tech. Had Forbes used criteria for innovation that recognized emergent leadership, novel problem-solving, or original thinking outside the circles of already well-known and well-established entrepreneurs we might have learned something new. Instead, we're basically reminded that "it takes money to make money."Meanwhile, African American women are the fastest-growing demographic of entrepreneurs in the United States. Their contributions to tech, amongst other fields, are cementing the importance of African American women in the innovation space. And they are doing this within and outside traditional tech frameworks. By becoming familiar with these entrepreneurs and their work, we can elevate their reputation and broaden our collective recognition of innovative leaders.In honor of black history month, we have compiled a list of African American women founders leading the way in tech innovation from Alabama to the Bay Area. From rethinking energy to debt forgiveness platforms these women are crossing boundaries in every field. Cultivating New Leaders Photo of Kathryn Finney, courtesy of Forbes.com. Kathryn Finney founder of DigitalundividedKathryn A. Finney is an American author, researcher, investor, entrepreneur, innovator and businesswoman. She is the founder and CEO of digitalundivided, a social enterprise that leads high potential Black and Latinx women founders through the startup pipeline from idea to exit.Laura Weidman Co-founder Code2040Laura Weidman Powers is the co-founder and executive director of Code2040, a nonprofit that creates access, awareness, and opportunities for minority engineering talent to ensure their leadership in the innovation economy.Angelica Ross founder of TransTech Social Enterprises Angelica Ross is an American businesswoman, actress, and transgender rights advocate. After becoming a self-taught computer coder, she went on to become the founder and CEO of TransTech Social Enterprises, a firm that helps employ transgender people in the tech industry.Christina Souffrant Ntim co-founder of Global Startup EcosystemChristina Souffrant Ntim is the co-founder of award-winning digital accelerator platform – Global Startup Ecosystem which graduates over 1000+ companies across 90+ countries a year.Media and EntertainmentBryanda Law founder of QuirktasticBryanda Law is the founder of Quirktastic, a modern media-tech company on a mission to grow the largest and most authentically engaged community of fandom-loving people of color.Morgan Debaun founder of Blavity Inc. Morgan DeBaun is an African American entrepreneur. She is the Founder and CEO of Blavity Inc., a portfolio of brands and websites created by and for black millennialsCheryl Contee co-founder of Do Big ThingsCheryl Contee is the award-winning CEO and co-founder of Do Big Things, a digital agency that creates new narratives and tech for a new era focused on causes and campaigns. Photo of Farah Allen, courtesy of The Source Magazine. Farah Allen founder of The Labz Farah Allen is the CEO and founder of The Labz, a collaborative workspace that provides automated tracking, rights management, protection—using Blockchain technology—of your music files during and after you create them.Health/Wellness Mara Lidey co-founder of Shine Marah Lidey is the co-founder & co-CEO of Shine. Shine aims to reinvent health and wellness for millennials through messaging technology.Alicia Thomas co-founder of Dibs Alicia Thomas is the founder and CEO of Dibs, a B2B digital platform that gives studios quick and easy access to real-time pricing for fitness classes. Photo of Erica Plybeah, courtesy of BetterTennessee.com Erica Plybeah Hemphill founder of MedHaul Erica Plybeah Hemphill is the founder of MedHaul. MedHaul offers cloud-based solutions that ease the burdens of managing patient transportation.Star Cunningham founder of 4D HealthwareStar Cunningham is the founder and CEO of 4D Healthware. 4D Healthware is patient engagement software that makes personalized medicine possible through connected data.Kimberly Wilson founder of HUEDKimberly Wilson is the founder of HUED. HUED is a healthcare technology startup that helps patients find and book appointments with Black and Latinx healthcare providers. Financial Viola Llewellyn co-founder of Ovamba SolutionsViola Llewellyn is the co-founder and the president of Ovamba Solutions, a US-based fintech company that provides micro, small, and medium enterprises in Africa and the Middle East with microfinance through a mobile platform.NanaEfua Baidoo Afoh-Manin, Briana DeCuir and Joanne Moreau founders of Shared Harvest FundNanaEfua, Briana and Joanne are the founders of Shared Harvest Fund. Shared Harvest Fund provides real opportunities for talented people to volunteer away their student loans. Photo of Sheena Allen, courtesy of People of Color in Tech. Sheena Allen founder of CapWaySheena Allen is best known as the founder and CEO of fintech company and mobile bank CapWay. Education Helen Adeosun co-founder of CareAcademyHelen Adeosun is the co-founder, president and CEO of CareAcademy, a start-up dedicated to professionalizing caregiving through online classes. CareAcademy brings professional development to caregivers at all levels. Alexandra Bernadotte founder of Beyond 12Alex Bernadotte is the founder and chief executive officer of Beyond 12, a nonprofit that integrates personalized coaching with intelligent technology to increase the number of traditionally underserved students who earn a college degree.Shani Dowell founder of PossipShani Dowell is the founder of Possip, a platform that simplifies feedback between parents, schools and districts. Learn more at possipit.com. Kaya Thomas of We Read TooKaya Thomas is an American computer scientist, app developer and writer. She is the creator of We Read Too, an iOS app that helps readers discover books for and by people of color.Kimberly Gray founder of Uvii Kimberly Gray is the founder of Uvii. Uvii helps students to communicate and collaborate on mobile with video, audio, and textNicole Neal co-founder of ProcureK12 by Noodle MarketsNicole Neal is the co-founder and CEO of ProcureK12 by Noodle Markets. ProcureK12 makes purchasing for education simple. They combine a competitive school supply marketplace with quote request tools and bid management.Beauty/Fashion/Consumer goodsRegina Gwyn founder of TresseNoireRegina Gwynn is the co-founder & CEO of TresseNoire, the leading on-location beauty booking app designed for women of color in New York City and Philadelphia.Camille Hearst co-founder of Kit.Camille Hearst is the CEO and co-founder of Kit. Kit lets experts create shoppable collections of products so their followers can buy and the experts can make some revenue from what they share. Photo of Esosa Ighodaro courtesy of Under30CEO. Esosa Ighodaro co-founder of CoSign Inc. Esosa Ighodaro is the co-founder of CoSign Inc., which was founded in 2013. CoSign is a mobile application that transfers social media content into commerce giving cash for endorsing and cosigning products and merchandise like clothing, home goods, technology and more.EnvironmentJessica Matthews founder of Uncharted PowerJessica O. Matthews is a Nigerian-American inventor, CEO and venture capitalist. She is the co-founder of Uncharted Power, which made Soccket, a soccer ball that can be used as a power generator.Etosha Cave co-founder of Opus 12 Etosha R. Cave is an American mechanical engineer based in Berkeley, California. She is the Co-Founder and Chief Scientific Officer of Opus 12, a startup that recycles carbon dioxide.Kellee James founder of Mercaris, Inc. Kellee James is the founder and CEO of Mercaris, Inc., a growing, minority-led start-up that makes efficient trading of organic and non-GMO commodities possible via market data service exchanges and trading platforms.Workplace Photo of Lisa Skeete Tatum courtesy of The Philadelphia Citezen. Lisa Skeete Tatum founder of LanditLisa Skeete Tatum is the founder and CEO of Landit, a technology platform created to increase the success and engagement of women in the workplace, and to enable companies to attract, develop, and retain high-potential, diverse talent.Netta Jenkins and Jacinta Mathis founders of Dipper Netta Jenkins and Jacinta Mathis are founders of Dipper, a platform that acts as a safe digital space for individuals of color in the workplace.Sherisse Hawkins founder of Pagedip Sherisse Hawkins is the visionary and founder of Pagedip. Pagedip is a cloud-based software solution that allows you to bring depth to digital documents, enabling people to read (text), watch (video) and do (interact) all in the same place without ever having to leave the page.Thkisha DeDe Sanogo founder of MyTAASKThkisha DeDe Sanogo is the founder of MyTAASK. MyTAASK is a personal planning platform dedicated to getting stuff done in real-time.Home Photo of Jean Brownhill, courtesy of Quartz at Work. Jean Brownhill founder of Sweeten Jean Brownhill is the founder and CEO of Sweeten, an award-winning service that helps homeowners and business owners find and manage the best vetted general contractors for major renovation projects.Reham Fagiri co-founder of AptDecoReham Fagiri is the co-founder of AptDeco. AptDeco is an online marketplace for buying and selling quality preowned furniture with pick up and delivery built into the service.Stephanie Cummings founder of Please Assist Me Stephanie Cummings is the founder and CEO of Please Assist me. Please Assist Me is an apartment task service in Nashville, TN. The organization empowers working professionals by allowing them to outsource their weekly chores to their own personal team.Law Kristina Jones co-founder of Court BuddyKristina Jones is the co-founder of Court Buddy, a service that matches clients with lawyers.Sonja Ebron and Debra Slone founders of Courtroom5Sonja Ebron and Debra Slone are the founders of Courtroom5. Courtroom5 helps you represent yourself in court with tools, training, and community designed for pro se litigants.Crowdfunding Zuley Clarke founder of Business Gift RegistryZuley Clarke is the founder of Business Gift Registry, a crowdfunding platform that lets friends and family support an entrepreneur through gift-giving just like they would support a couple for a wedding. Full Article News & Culture
en CLI Equivalents for Common MAMP PRO and Sequel Pro Tasks By feedproxy.google.com Published On :: Thu, 26 Mar 2020 00:00:00 -0400 Working on website front ends I sometimes use MAMP PRO to manage local hosts and Sequel Pro to manage databases. Living primarily in my text editor, a terminal, and a browser window, moving to these click-heavy dedicated apps can feel clunky. Happily, the tasks I have most frequently turned to those apps for —starting and stopping servers, creating new hosts, and importing, exporting, deleting, and creating databases— can be done from the command line. I still pull up MAMP PRO if I need to change a host's PHP version or work with its other more specialized settings, or Sequel Pro to quickly inspect a database, but for the most part I can stay on the keyboard and in my terminal. Here's how: Command Line MAMP PRO You can start and stop MAMP PRO's servers from the command line. You can even do this when the MAMP PRO desktop app isn't open. Note: MAMP PRO's menu icon will not change color to reflect the running/stopped status when the status is changed via the command line. Start the MAMP PRO servers: /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd startServers Stop the MAMP PRO servers: /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd stopServers Create a host (replace host_name and root_path): /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd createHost host_name root_path MAMP PRO-friendly Command Line Sequel Pro Note: if you don't use MAMP PRO, just replace the /Applications/MAMP/Library/bin/mysql with mysql. In all of the following commands, replace username with your user name (locally this is likely root) and database_name with your database name. The -p (password) flag with no argument will trigger an interactive password prompt. This is more secure than including your password in the command itself (like -pYourPasswordHere). Of course, if you're using the default password root is not particular secure to begin with so you might just do -pYourPasswordHere. Setting the -h (host) flag to localhost or 127.0.0.1 tells mysql to look at what's on localhost. With the MAMP PRO servers running, that will be the MAMP PRO databases. # with the MAMP PRO servers running, these are equivalent: # /Applications/MAMP/Library/bin/mysql -h 127.0.0.1 other_options # and # /Applications/MAMP/Library/bin/mysql -h localhost other_options /Applications/MAMP/Library/bin/mysql mysql_options # enter. opens an interactive mysql session mysql> some command; # don't forget the semicolon mysql> exit; Create a local database # with the MAMP PRO servers running # replace `username` with your username, which is `root` by default /Applications/MAMP/Library/bin/mysql -h localhost -u username -p -e "create database database_name" or # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p # and then enter mysql> create database database_name; # don't forget the semicolon mysql> exit MAMP PRO's databases are stored in /Library/Application Support/appsolute/MAMP PRO/db so to confirm that it worked you can ls /Library/Application Support/appsolute/MAMP PRO/db # will output the available mysql versions. For example I have mysql56_2018-11-05_16-25-13 mysql57 # If it isn't clear which one you're after, open the main MAMP PRO and click # on the MySQL "servers and services" item. In my case it shows "Version: 5.7.26" # Now look in the relevant MySQL directory ls /Library/Application Support/appsolute/MAMP PRO/db/mysql57 # the newly created database should be in the list Delete a local database # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p -e "drop database database_name" Export a dump of a local database. Note that this uses mysqldump not mysql. # to export an uncompressed file # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysqldump -h localhost -u username -p database_name > the/output/path.sql # to export a compressed file # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysqldump -h localhost -u username -p database_name | gzip -c > the/output/path.gz Export a local dump from an external database over SSH. Note that this uses mysqldump not mysql. # replace `ssh-user`, `ssh_host`, `mysql_user`, `database_name`, and the output path # to end up with an uncompressed file ssh ssh_user@ssh_host "mysqldump -u mysql_user -p database_name | gzip -c" | gunzip > the/output/path.sql # to end up with a compressed file ssh ssh_user@ssh_host "mysqldump -u mysql_user -p database_name | gzip -c" > the/output/path.gz Import a local database dump into a local database # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p database_name < the/dump/path.sql Import a local database dump into a remote database over SSH. Use care with this one. But if you are doing it with Sequel Pro —maybe you are copying a Craft site's database from a production server to a QA server— you might as well be able to do it on the command line. ssh ssh_user@ssh_host "mysql -u username -p remote_database_name" < the/local/dump/path.sql For me, using the command line instead of the MAMP PRO and Sequel Pro GUI means less switching between keyboard and mouse, less opening up GUI features that aren't typically visible on my screen, and generally better DX. Give it a try! And while MAMP Pro's CLI is limited to the essentials, command line mysql of course knows no limits. If there's something else you use Sequel Pro for, you may be able to come up with a mysql CLI equivalent you like even better. Full Article Code Front-end Engineering Back-end Engineering
en Scurry: A Race-To-Finish Scavenger Hunt App By feedproxy.google.com Published On :: Thu, 26 Mar 2020 13:58:00 -0400 We have a lot of traditions here at Viget, many of which you may have read about - TTT, FLF, Pointless Weekend. There are others, but you have to be an insider for more information on those. Pointless Weekend is one of our favorite traditions, though. It’s been around over a decade and some pretty fun work has come out of it over the years, like Storyboard, Baby Bookie, and Short Order. At a high level, we take 48 hours to build a tool, experiment, or stunt as a team, across all four of our offices. These projects are entirely separate from our client work and we use them to try out new technologies, explore roles on the team, and stress-test our processes. The first step for a Pointless Weekend is assembling the teams. We had two teams this year, with a record number of participants. You can read about TrailBuddy, what the other team built, here. The Scurry team was split between the DC and Durham offices, so all meetings were held via Hangout. Once we were assembled, we set out to understand the constraints and the goals of our Pointless Project. We went into this weekend with an extra pep in our step, as we were determined to build something for the upcoming Viget 20th anniversary TTT this summer. Here’s what we knew we wanted: An activity all Vigets could do together, where they could create memories, and share broadly on socialSomething that we could use in a spotty network at C Lazy U Ranch in ColoradoA product we can share with others: corporate groups, families and friends, schools, bachelor/ette parties We landed on a scavenger hunt native app, which we named Scurry (Scavenger + Hurry = Scurry. Brilliant, right?). There are already a few scavenger apps available, so we set out to create something that was Quick and easy to set up huntsFree and intuitive for usersA nice combination of trivia and activitiesSocial! We wanted to enable teams to share photos and progress One of the main reasons we have Pointless Weekends is to test out new technologies and processes. In that vein, we tried out Notion as our central organizing tool - we used it for user journeys, data modeling, and even writing tickets, which we typically use Github for. We tested out Notion as our primary tool, writing tickets and tracking progress. When we built the app, we needed to prepare for spotty network service, as internet connectivity isn’t guaranteed at C Lazy U Ranch – where our Viget20 celebration will be. A Progressive Web Application (PWA) didn't make sense for our tech requirements, so we chose the route of creating a native application. There are a number of options available to build native applications. But, as we were looking to make as much progress as possible in 48-hours, we chose one of our favorite frameworks: React Native. React Native allows developers to build true, cross-platform native applications, using some of our favorite technologies: javascript, the React framework, and a native-specific variant of CSS. We decided on the turn-key solution Expo. Expo has extra tooling allowing for easy development, deployment, and debugging. This is a snap shot of our app and Expo. Our frontend developers were able to immediately dive in making screens and styling components, and quickly made the mockups in Whimsical a reality. On the backend, we used the supported library to connect to the backend datastore, Firebase. Firebase is a hosted solution for data storage, with key features built-in like authentication, realtime updates, and offline support. Our backend developer worked behind the frontend developers hooking those views up to live data. Both of these tools, Expo and Firebase, were easy to use and allowed us to focus on building a working application quickly, rather than being mired in setup or bespoke solutions to common problems. Whimsical is one of our favorite tools for building out mockups of an app. We made impressive progress in our 48-hour sprint, but there’s still some work to do. We have some additional features we hope to add before TTT, which will require additional testing and refining. For now, stay tuned and sign up for our newsletter. We’ll be sure to share when Scurry is ready for the world! Full Article News & Culture
en 5 things to Note in a New Phoenix 1.5 App By feedproxy.google.com Published On :: Fri, 24 Apr 2020 13:44:00 -0400 Yesterday (Apr 22, 2020) Phoenix 1.5 was officially released ???? There’s a long list of changes and improvements, but the big feature is better integration with LiveView. I’ve previously written about why LiveView interests me, so I was quite excited to dive into this release. After watching this awesome Twitter clone in 15 minutes demo from Chris McCord, I had to try out some of the new features. I generated a new phoenix app with the —live flag, installed dependencies and started a server. Here are five new features I noticed. 1. Database actions in browser Oops! Looks like I forgot to configure the database before starting the server. There’s now a helpful message and a button in the browser that can run the command for me. There’s a similar button when migrations are pending. This is a really smooth UX to fix a very common error while developing. 2. New Tagline! Peace-of-mind from prototype to production This phrase looked unfamiliar, so I went digging. Turns out that the old tagline was “A productive web framework that does not compromise speed or maintainability.” (I also noticed that it was previously “speed and maintainability” until this PR from 2019 was opened on a dare to clarify the language.) Chris McCord updated the language while adding phx.new —live. I love this framing, particularly for LiveView. I am very excited about the progressive enhancement path for LiveView apps. A project can start out with regular, server rendered HTML templates. This is a very productive way to work, and a great way to start a prototype for just about any website. Updating those templates to work with LiveView is an easier lift than a full rebuild in React. And finally, when you’re in production you have the peace-of-mind that the reliable BEAM provides. 3. Live dependency search There’s now a big search bar right in the middle of the page. You can search through the dependencies in your app and navigate to the hexdocs for them. This doesn’t seem terribly useful, but is a cool demo of LiveView. The implementation is a good illustration of how compact a feature like this can be using LiveView. 4. LiveDashboard This is the really cool one. In the top right of that page you see a link to LiveDashboard. Clicking it will take you to a page that looks like this. This page is built with LiveView, and gives you a ton of information about your running system. This landing page has version numbers, memory usage, and atom count. Clicking over to metrics brings you to this page. By default it will tell you how long average queries are taking, but the metrics are configurable so you can define your own custom telemetry options. The other tabs include process info, so you can monitor specific processes in your system: And ETS tables, the in memory storage that many apps use for caching: The dashboard is a really nice thing to get out of the box and makes it free for application developers to monitor their running system. It’s also developing very quickly. I tried an earlier version a week ago which didn’t support ETS tables, ports or sockets. I made a note to look into adding them, but it's already done! I’m excited to follow along and see where this project goes. 5. New LiveView generators 1.5 introduces a new generator mix phx.gen.live.. Like other generators, it will create all the code you need for a basic resource in your app, including the LiveView modules. The interesting part here is that it introduces patterns for organizing LiveView code, which is something I have previously been unsure about. At first glance, the new organization makes sense and feels like a good approach. I look forward to seeing how this works on a real project. Learn More We're hiring Application Developers in our Boulder, Chattanooga, Durham, Falls Church and Remote (U.S. Only) offices. Learn more and introduce yourself. Conclusion The 1.5 release brings more changes under the hood of course, but these are the first five differences you’ll notice after generating a new Phoenix 1.5 app with LiveView. Congratulations to the entire Phoenix team, but particularly José Valim and Chris McCord for getting this work released. Full Article Code Back-end Engineering
en A Parent’s Guide to Working From Home, During a Global Pandemic, Without Going Insane By feedproxy.google.com Published On :: Thu, 30 Apr 2020 15:06:00 -0400 Though I usually enjoy working from Viget’s lovely Boulder office, during quarantine I am now working from home while simultaneously parenting my 3-year-old daughter Audrey. My husband works in healthcare and though he is not on the front lines battling COVID-19, he is still an essential worker and as such leaves our home to work every day. Some working/parenting days are great! I somehow get my tasks accomplished, my kid is happy, and we spend some quality time together. And some days are awful. I have to ignore my daughter having a meltdown and try to focus on meetings, and I wish I wasn’t in this situation at all. Most days are somewhere in the middle; I’m just doing my best to get by. I’ve seen enough working parent memes and cries for help on social media to know that I’m not alone. There are many parents out there who now get to experience the stress and anxiety of living through a global pandemic while simultaneously navigating ways to stay productive while working from home and being an effective parent. Fun isn’t it? I’m not an expert on the matter, but I have found a few small things that are making me feel a bit more sane. I hope sharing them will make someone else’s life easier too. Truths to Accept First, let’s acknowledge some truths about this new situation we find ourselves in: Truth 1: We’ve lost something. Parents have lost more than daycare and schools during this epidemic. We’ve lost any time that we had for ourselves, and that was really valuable. We no longer have small moments in the day to catch up on our personal lives. I no longer have a commute to separate my work duties from my mom duties, or catch up with my friends, or just be quiet. Truth 2: We’re human. The reason you can’t be a great employee and a great parent and a great friend and a great partner or spouse all day every day isn’t because you’re doing a bad job, it’s because being constantly wonderful in all aspects of your life is impossible. Pick one or two of those things a day to focus on. Truth 3: We’re all doing our best. This is the most important part of this article. Be kind to yourselves. This isn’t easy, and putting so much pressure on yourself that you break isn’t going to make it any easier. Work from Home Goals Now that we’ve accepted some truths about our current situation, let’s set some goals. Goal 1: Do Good Work At Viget, and wherever you work, with kids or without we all want to make sure that the quality of our work stays up throughout the pandemic and that we can continue to be reliable team members and employees to the best of our abilities. Goal 2: Stay Sane We need to figure out ways to do this without sacrificing ourselves entirely. For me, this means fitting my work into normal work hours as much as possible so that I can still have some downtime in the evenings. Goal 3: Make This Sustainable None of us knows how long this will last but we may as well begin mentally preparing for a long haul. Work from Home Rules Now, there are some great Work from Home Rules that apply to everyone with or without kids. My coworker Paul Koch shared these with the Viget team a Jeremy Bearimy ago and I agree this is also the foundation for working from home with kids. When you’re in a remote meeting, minimize other windows to stay focusedSet a schedule and avoid chores*Take breaks away from the screenPlan your workday on the calendar+Be mindful of Slack and social media as a distractionUse timers+Keep your work area separate from where you relaxPretend that you’re still WFWExperiment and figure out what works for you In the improv spirit I say “Yes, AND….” to these tips. And so, here are my adjusted rules for WFH while kiddos around: These have both been really solid tools for me, so let’s dig in. Daily flexible schedule for kids Day Planning: Calendars and Timers A few small tweaks and adjustments make this even more doable for me and my 3-year-old. First- I don’t avoid chores entirely. If I’m going up and down the stairs all day anyway I might as well throw in a load of laundry while I’m at it. The more I can get done during the day means a greater chance of some down time in the evening. Each morning I plan my day and Audrey’s day: My Work Day:Audrey's DayIdentify times of day you are more likely to be focus and protect them. For me, I know I have a block of time from 5-7a before Audrey wakes up and again during “nap time” from 1-3p.I built a construction paper “schedule” that we update and reorganize daily. We make the schedule together each day. She feels ownership over it and she gets to be the one who tells me what we do next.Look at your calendar first thing and make adjustments either in your plans or move meetings if you have to.I’m strategic about screen time- I try to schedule it when I have meetings. It also helps to schedule a physical activity before screen time as she is less likely to get bored.Make goals for your day: Tackle time sensitive tasks first. Take care of things that either your co-workers or clients are waiting on from you first, this will help your day be a lot less stressful. Non-time sensitive tasks come next- these can be done at any time of day.We always include “nap time” even though she rarely naps anymore. This is mostly a time for us both to be alone. When we make the schedule together it also helps me understand her favorite parts of the day and reminds me to include them. Once our days are planned, I also use timers to help keep the structure of the day. (I bought a great alarm clock for kids on Amazon that turns colors to signal bedtime and quiet time. It’s been hugely worth it for me.) Timers for Me:Timers for Audrey:More than ever, I rely on a time tracking timer. At Viget we use Harvest to track time, and it has a handy built in timer, but there are many apps or online tools that could help you keep track of your time as well.Audrey knows what time she can come out of her room in the morning. If she wakes up before the light is green she plays quietly in her room.I need a timer because the days and hours are bleeding together- without tracking as I go it would be really hard for me to remember when I worked on certain projects or know for certain if I gave Viget enough time for the day.She knows how long “nap time” is in the afternoon.Starting and stopping the timer helps me turn on and off “work mode”, which is a helpful sanity bonus.Perhaps best of all I am not the bad guy! “Sorry honey, the light isn’t green yet and there really isn’t anything mommy can do about it” is my new favorite way to ensure we both get some quiet time. Work from Home Rules: Updated for Parents Finally, I have a few more Work from Home Rules for parents to add to the list: Minimize other windows in remote meetingsSet a schedule and fit in some chores if time allowsTake breaks away from the screenSchedule both your and your kids’ daysBe mindful of Slack and social media as a distractionUse timers to track your own time and help your kids understand the dayKeep your work area separate from where you relaxPretend that you’re still WFWExperiment and figure out what works for youBe prepared with a few activitiesEach morning, have just ONE thing ready to go. This can be a worksheet you printed out, a coloring station setup, a new bag of kinetic sand you just got delivered from Amazon, a kids dance video on YouTube or an iPad game. Recently I started enlisting my mom to read stories on Facetime. The activity doesn’t have to be new each day but (especially for young kids) it has to be handy for you to start up quickly if your schedule changesClearly communicate your availability with your team and project PMsLife happens. Some days are going to be hard. Whatever you do, don’t burn yourself out or leave your team hanging. If you need to move a meeting or take a day off, communicate that as early and as clearly as you can.Take PTO if you canNone of us are superheroes. If you’re feeling overwhelmed- take a look at the next few days and figure out which one makes the most sense for you to take a break.Take breaks to be alone without doing a taskWork and family responsibilities have blended together, there’s almost no room for being alone. If you can find some precious alone time don’t use it to fold laundry or clean the bathroom. Just zone out. I think we all really need this. Last but not least, enjoy your time at home if you can. This is an unusual circumstance and even though it’s really hard, there are parts that are really great too. If you have some great WFH tips we’d love to hear about them in the comments! Full Article Process News & Culture
en So You've Written a Bad Design Take By feedproxy.google.com Published On :: Tue, 05 May 2020 08:00:00 -0400 So you’ve just written a blog post or tweet about why wireframes are becoming obsolete, the dangers of “too accessible” design, or how a certain style of icon creates “cognitive fatigue.” Your post went viral, but now you’re getting ratioed by rude people on the Internet. That sucks! You were just trying to start a conversation and you probably didn’t deserve all that negativity (except for you, “too accessible” guy). Most likely, you made one of these common mistakes: 1. You made generalizations about “design” You, a good user-centered designer, know that you are not your user. Nor are you every designer. First of all, let's acknowledge that there is no universal definition of design. Even if we narrow it down to software design, it’s still hard to make generalizations. Agency, in-house, product, startup, enterprise, non-profit, website, app, connected hardware, etc. – there are a lot of different work contexts and cultures for people with “designer” in their titles. "The Design Industry" is not a thing, but even if it were, you don't speak for it. Don’t assume that the kind of design work you do is the universal default. 2. You didn’t share enough context There are many great design books and few great design blog posts. (There are, to my knowledge, no great design tweets, but I am open to your suggestions.) Writing about design is not well suited to short formats, because context plays such an important role and there’s always a lot of it to cover. Writing about your work should include as much context as you would include if you were presenting your portfolio for a job interview. What kind of organization did you work for? Who was your client and/or your stakeholders? What was the goal of the project? Your timeline? What was the makeup of your team? What were the notable business rules and constraints? How are you defining effectiveness and success? Without these kinds of details, it’s not possible for other designers to know if what you’ve written is credible or applicable to them. 3. You were too certain A blog post doesn’t need to be a dissertation. It’s okay to share hunches and anecdotes, but give the necessary caveats. And if you're making claims about science, bruh, you gotta cite your sources. Be humble in your takes. Your account of what worked for you and why is more valuable to your peers than making sweeping claims and reheating the same old arguments. Be prepared to be told you’re wrong, and have the humility to realize that your perspective is just your perspective. Real conversations, like good design, are built on feedback and diverse viewpoints. — Together, we can improve the discourse in our information ecosystems. Don't generalize. Give context. Be humble. Full Article Design & Content User Experience
en Internet of Things en de gebouwde omgeving By designworkplan.com Published On :: Fri, 14 Dec 2012 11:09:34 +0000 Internet of Things, wat betekend dat voor informatie in de gebouwde omgeving? Hoe kan een bewegwijzering systeem hiervan onderdeel uitmaken? Full Article blog blognl iot nl
en Interactie in een Dynamische Omgeving By designworkplan.com Published On :: Fri, 14 Dec 2012 11:12:44 +0000 Interactie in een dynamische omgeving is een vernieuwde manier van communiceren tussen gebruiker en omgeving. Full Article blog blognl interactie nl
en Book review: Orientation & Identity By designworkplan.com Published On :: Wed, 26 Jun 2013 09:00:31 +0000 Interviews and background stories covered in this book: Orientation & Identity by Erwin K. Bauer. Full Article review blogen en Orientation & Identity
en Visual Identity: ESA Annual Conference By traceygrady.com Published On :: Thu, 19 Feb 2015 03:16:20 +0000 Full Article Uncategorised
en Recent Work: TADTas website By traceygrady.com Published On :: Wed, 22 Apr 2015 10:36:53 +0000 The internet holds a lot of potential for non-profits to get their message out, build an audience and raise money. Using the web to tell stories about helping people in need can be very effective for a non-profit organisation looking for new avenues to generate income and build support in other ways such as a […] Full Article Design work accessible content strategy non-profit portfolio responsive Tasmania web design
en What every business must do (and designers even more so) By traceygrady.com Published On :: Mon, 20 Jul 2015 05:03:09 +0000 What should all businesses do at least once, and do properly, and (like the title of this blog post suggests) designers need to do repeatedly? The answer is: Understanding the target market they’re catering to. Sure, that makes sense—but why are graphic designers any different? Why do this repeatedly? When you’re in business, you’re in the […] Full Article Business clients customers profiling
en Design checklist: What clients should provide their designer By traceygrady.com Published On :: Sun, 09 Aug 2015 09:44:53 +0000 Hello! I have updated this very popular post to include a free downloadable PDF of this checklist. Preparation is key to successful management of any project, and design projects are no different. The more preparation that both client and designer do right at the start, the more smoothly the work will go. I find checklists […] Full Article Graphic Design Business checklist clients collaboration project management resources
en Let's Encrypt Everything By blog.codinghorror.com Published On :: Wed, 23 Nov 2016 00:03:31 GMT I'll admit I was late to the HTTPS party. But post Snowden, and particularly after the result of the last election here in the US, it's clear that everything on the web should be encrypted by default. Why? You have an unalienable right to privacy, both in the real world Full Article
en The Existential Terror of Battle Royale By blog.codinghorror.com Published On :: Sun, 05 Nov 2017 10:02:53 GMT It's been a while since I wrote a blog post, I guess in general, but also a blog post about video games. Video games are probably the single thing most attributable to my career as a programmer, and everything else I've done professionally after that. I still feel video games Full Article
en What does Stack Overflow want to be when it grows up? By blog.codinghorror.com Published On :: Mon, 22 Oct 2018 10:52:32 GMT I sometimes get asked by regular people in the actual real world what it is that I do for a living, and here's my 15 second answer: We built a sort of Wikipedia website for computer programmers to post questions and answers. It's called Stack Overflow. As of last month, Full Article
en New Branding & Website Design Launched for Enterprise High School in Clearwater, Florida By feedproxy.google.com Published On :: Wed, 13 Jul 2016 20:03:45 +0000 We recently completed a full rebrand and website design project for Enterprise High School, a charter school located in Clearwater,...continue reading Full Article Featured Website Launches Web Design wordpress
en Website Design Project for the Conference of County Court Judges of Florida By feedproxy.google.com Published On :: Tue, 23 Aug 2016 13:37:08 +0000 In Spring 2016 after a meeting in Fort Myers, Florida, we were selected by the Judges’ group representing all County...continue reading Full Article Southwest Florida Web Design Website Launches Wordpress Fort Myers Web Design
en Family Health Centers of Southwest Florida Website Design Launch By feedproxy.google.com Published On :: Tue, 12 Mar 2019 01:25:23 +0000 We recently completed a website design and development project for Family Health Centers of Southwest Florida. This National Health Service...continue reading Full Article Featured Fort Myers Web Design Naples Web Design Web Design Website Launches
en Caricatures by Ricardo Gimenes By feedproxy.google.com Published On :: Wed, 11 Apr 2012 04:59:46 +0000 We’re working on redesigning the Pagebreak Podcast website and decided to get some caricatures of us made by Ricardo Gimenes.Check ’em out! We’re SO CUTE! Full Article Just For Fun
en Good Cop & Bad Cop: Laying Down the Law and Keeping People Happy As an Independent Business Owner By feedproxy.google.com Published On :: Sat, 28 Apr 2012 00:51:13 +0000 Earlier this week I met up for coffee with a client of mine. The two of us originally met when his employeer was my client and after leaving that job he hired me to customize his personal blog and we formed our own client/designer relationship. I was excited when he emailed me last week with the […] Full Article Business Clients
en She’s Geeky: My First Unconference & Having Feels about Solidarity Between Women in Tech By feedproxy.google.com Published On :: Sun, 11 May 2014 21:07:29 +0000 This Friday I attended the first day of She’s Geeky here in Seattle. It was my first experience of the Unconference Format and I had no idea what to expect, but ended up having a GREAT TIME. Discussions that I joined in on throughout the day included subjects such as Impostor Syndrome, Diversity Groups, Side- […] Full Article Community Liz
en My First Business Mentorship Meeting By feedproxy.google.com Published On :: Wed, 21 Jan 2015 01:30:45 +0000 Today was my very first one-on-one business mentorship meeting with Marie Poulin at Digital Strategy School. This was the first of what will be monthly 1 Hour sessions with Marie during the 6-month Digital Strategy School course and I can already tell these next 6 months are going to be a whirlwind! The course officially […] Full Article Uncategorized
en How To Build A Vue Survey App Using Firebase Authentication And Database By www.smashingmagazine.com Published On :: Fri, 08 May 2020 13:10:00 PDT https://www.smashingmagazine.com/2020/05/vue-survey-app-firebase-authentication-database/ Full Article
en Building a Crossword Puzzle Generator with JavaScript By mitchum.blog Published On :: Sat, 09 May 2020 04:14:31 PDT https://mitchum.blog/building-a-crossword-puzzle-generator-with-javascript/ Full Article
en 10 Best Content Scheduling Tools for WordPress By line25.com Published On :: Sat, 09 May 2020 09:12:00 PDT https://line25.com/wordpress-plug-ins/content-scheduling-tools-for-wordpress Full Article
en When Figma Isn’t Enough for Product Teams By blog.pixelic.io Published On :: Sat, 09 May 2020 10:04:00 PDT https://blog.pixelic.io/pixelic-for-figma/ Full Article
en OpenCV Directly in the Browser (WebAssembly and webworker) By aralroca.com Published On :: Sat, 09 May 2020 11:11:00 PDT https://aralroca.com/blog/opencv-in-the-web Full Article
en Post-concussion treatment, suicide prevention ‘a team sport,’ says lead researcher By feedproxy.google.com Published On :: Tue, 10 Mar 2020 12:26:16 EDT Suicide attempts common in post-concussion patients, says Dr. Charles Tator of the Canadian Concussion Centre Full Article
en Trump officials say people with disabilities must not be denied lifesaving coronavirus care By feedproxy.google.com Published On :: Mon, 30 Mar 2020 14:09:48 EDT Patients with disabilities must receive the same level of lifesaving medical treatment from hospitals during the coronavirus pandemic as able-bodied patients, the Trump administration said. Full Article
en Coronavirus pandemic could inflict emotional trauma and PTSD on an unprecedented scale, scientists warn By feedproxy.google.com Published On :: Mon, 30 Mar 2020 14:41:58 EDT Researchers are warning that the coronavirus pandemic could inflict long-lasting emotional trauma on an unprecedented global scale. They say it could leave millions wrestling with debilitating psychological disorders while dashing hopes for a swift economic recovery. Full Article
en Treating PTSD Involves Science, Counseling, Group Support By feedproxy.google.com Published On :: Mon, 06 Apr 2020 10:05:09 EDT In the years since he had returned from Vietnam, Elmer “Snubby” Burket was a self-described workaholic, raising a son, keeping up his house and always taking jobs where he could be by himself as he tried to put the war behind him. Full Article
en Even Light Exercise Can Speed Stroke Recovery By feedproxy.google.com Published On :: Tue, 14 Apr 2020 14:18:46 EDT Even light exercise can counter the damage of stroke in survivors, a new study suggests. Full Article
en Could you get PTSD from your pandemic experience? The long-term mental health effects of coronavirus By feedproxy.google.com Published On :: Mon, 20 Apr 2020 10:10:58 EDT Experiencing intense flashbacks, nightmares, irritability, anger, and fear? In the face of a traumatic event like the Covid-19 pandemic, it’s common to feel this way. Full Article
en When Your Veteran Spouse Battles More Than PTSD By feedproxy.google.com Published On :: Thu, 30 Apr 2020 12:19:38 EDT For many veterans’ spouses, we’ve watched our partners struggle not only with post-traumatic stress disorder (PTSD) but with other mental health conditions, as well. Around 80 percent of people with PTSD wrestle with at least one other co-occurring mental health condition in their lifetime.What many people don’t see is the impact PTSD and comorbidity have on vets’ spouses. Full Article
en Own This Extensive Font Library Worth $4265 for Just $29 By blog.spoongraphics.co.uk Published On :: Wed, 15 Apr 2020 07:00:40 +0000 High-quality fonts can be really expensive and are often the most costly tool a designer needs, so when a massive saving like this comes along it’s hard to let it pass by! This brand new bundle contains 16 hand-picked typefaces, containing hundreds of individual fonts, chosen specifically for their quality and versatility. These fonts are […] The post Own This Extensive Font Library Worth $4265 for Just $29 appeared first on Spoon Graphics. Full Article News bundle deal design cuts fonts
en Could you get PTSD from your pandemic experience? The long-term mental health effects of coronavirus By feedproxy.google.com Published On :: Monday, April 20, 2020 - 10:10am Experiencing intense flashbacks, nightmares, irritability, anger, and fear? In the face of a traumatic event like the Covid-19 pandemic, it’s common to feel this way. Full Article
en When Your Veteran Spouse Battles More Than PTSD By feedproxy.google.com Published On :: Thursday, April 30, 2020 - 12:19pm For many veterans’ spouses, we’ve watched our partners struggle not only with post-traumatic stress disorder (PTSD) but with other mental health conditions, as well. Around 80 percent of people with PTSD wrestle with at least one other co-occurring mental health condition in their lifetime.What many people don’t see is the impact PTSD and comorbidity have on vets’ spouses. Full Article
en Benefits of Approval Studio Proofing Tool for Designers and Creative Teams By feedproxy.google.com Published On :: Wed, 18 Mar 2020 11:32:52 +0000 Among all of the design agencies’ headaches, artwork proofing is probably one of the most acute ones. Forwarding countless numbers of requests, following up your approvers with reminders that they have a file to check, searching for their feedback in the endless pile of emails or messages… Quite daunting, to say the least, and quite […] Full Article Blog Resources Graphic design Software Tools
en 5 Important Tips When Building Your First Mobile App By feedproxy.google.com Published On :: Tue, 07 Apr 2020 07:50:35 +0000 Building a mobile application is a complex process, and mistake can be costly in time and money. To make sure that your mobile app projects are a success, here are a few tips that will be helpful. 1. Plan Ahead When building anything complex, you should never start without a plan. Building a mobile app […] Full Article Blog How-to & tutorials App design Web design
en How to Improve User Experience Design: Tips to Increase Conversion Rates By feedproxy.google.com Published On :: Fri, 24 Apr 2020 13:53:03 +0000 No one can deny that UX (user experience) is the foundation of any website. This is the main reason why many website owners always look for ways to improve it. Some even spend a lot of money on design because of it. So, what is UX design exactly? And what is the difference between user […] Full Article Blog How-to & tutorials UX Web design
en How to personalize the mobile experience for app users By feedproxy.google.com Published On :: Sun, 03 May 2020 08:42:02 +0000 Mobile user experience somehow ‘imposed itself’ with all the development and improvement of mobile communication devices. In fact, it is the quality of user experience that divides outstanding apps from their less outstanding counterparts. The same factor enables startups to learn from big brands and to improve their products. User experience for mobile applications – […] Full Article Blog How-to & tutorials UX Web design
en View Mac Calendar from Command Line By feedproxy.google.com Published On :: Mon, 24 Feb 2020 12:28:44 +0000 As someone that loves using UI tools, I do pride myself in learning how to accomplish the same feats from command line. Don’t believe me? Check out my Command Line tutorials section — I guarantee you’ll learn quite a bit. Recently I learned that you can view basic calendars from command line with the cal […] The post View Mac Calendar from Command Line appeared first on David Walsh Blog. Full Article Shell