r/graphic_design - Ideas...

Ideas… : graphic_design

Hello good people of Reddit!

I have to look for some insparation that people could possibly provide me with, it is something to do with a national holiday in my country but I do not want to incorporate any politics into my post, even if the internet is a free place to say anything you like, I will try to keep people happy.

I have been asigned a task in my organization to maybe change up supposedly a logo for my Local National Holiday and we need some kind of design, I woud like to get somebody’s opinion on what could possibly be changed up here.

In the examples the ones with colours are examples which have already been done.

I apologise for making the post so long with the pictures….

r/graphic_design - Ideas...

Source link

r/graphic_design - Designing flags, banners and wallpapers?

Designing flags, banners and wallpapers? : graphic_design

Banners, wallpapers, backgrounds or simple flag designs (for someone’s story/game) count as graphic design, right? And if not where would this fit better? Should I count them as commissions? How do you come up with a price? I am completely new to this. I feel like this is so much more basic compared to what other professional people do. But people that ask for this seem happy with the result.

r/graphic_design - Designing flags, banners and wallpapers?

Source link

Boost app engagement with chat, voice, and video APIs

Boost app engagement with chat, voice, and video APIs

Sendbird is a service for helping you add social features to your app. Wanna add in-app chat? Sendbird does that. Wanna add in-app voice or video calls? Sendbird does that.

Here’s how I always think about stuff like this. Whatever the thing you are building is, you should specialize in the core of it, and not get bogged down in building essentially another product as you’re doing it. Say you want to build an app for dentists to do bookings and customer management. Please do, by the way, my dentist could really use it. You’ve got a lot of work ahead of you, the core of which is building a thing that is perfect for actual dentists and getting the UX right. In-app chat might be an important part of that, but you aren’t specifically building chat software, you’re building dentist software. Lean on Sendbird for the chat (and everything else).

To elaborate on the dentist software example for a bit, I can tell you more about my dentist. They are so eager to text me, email me, call me, even use social media, to remind me about everything constantly. But for me to communicate with them, I have to call. It’s the only way to talk to them about anything—and it’s obnoxious. If there was a dentist in town where I knew I could fire up a quick digital chat with them to book things, I’d literally switch dentists. Even better if I could click a button in a browser to call them or do a video consult. That’s just good business.

You know what else? Your new app for dentists (seriously, you should do this) is going to have to be compliant on a million standards for any dentist to buy it. This means any software you buy will need to be too. Good thing Sendbird is all set with HIPPA/HITECH, SOC 2, GDPR, and more, not to mention being hugely security-focused.

Sendbird aren’t spring chickens either, they are already trusted by Reddit, Virgin UAE, Yahoo, Meetup, and tons more.

Chat is tricky stuff, too. It’s not just a simple as shuffling a message off to another user and displaying it. Modern chat offers things like reactions, replies, and notifications. Chat needs to be friendly to poor networks and offline situations. Harder still, moderating chat activity and social control like blocking and reporting. Not only does Sendbird help with all that, their UIKit will help you build the interface as well.

Build it with Sendbird, and it’ll scale forever.

Sendbird’s client base gave us confidence that they would be able to handle our traffic and projected growth. ”

Ben Celibicic, CTO

Modern apps have modern users that expect these sort of features.

Source link

CSS Grid - 4 columns but want to center the last one

CSS Grid – 4 columns but want to center the last one

CSS Grid - 4 columns but want to center the last one

Hello Reddit,

I have this layout. Two first rows have all the "boxes" filled, but the last row has only 3 elements and wants them to be centered (like the picture). I am pretty new to the grid so any help would be appreciated.

Thanks in advance.


submitted by /u/papadopoulosle

Source link

r/graphic_design - CONT; estimated worth?

CONT; estimated worth? : graphic_design

Hello guys, sorry to bother you with this again, but I have no idea how it works and you guys are mostly professionals sooo…

This is a continuation of my previous post (here) where I was asking you about when did you know its time to charge people for your design. After some consulting here and with my fellow book cover designer friends I decided to open commissions and start charging people for my work.

I actually didn’t expect so many people to order from me across various platforms where I posted my ad but it made me feel happy so thank you, guys 🙂

But the thing is, I think I´m doing something wrong… because even my customers tell me my commissions are really cheap 😅

Would you mind looking at this and telling me your opinion?

My book covers are all non-commercial, done in 3-5 hours (sometimes 6), and I charge for commissions 8-10€, up to 15€ if it takes more than 5 hours (for the whole thing + revisions if needed)

Do you think that’s fair? Or what would you say I should charge?

r/graphic_design - CONT; estimated worth?

this is basically what I attach to the ad

Thank you for your replies!

(and if you want to feel free to give me feedback/criticism on my covers haha…)

Source link

Python Developer, Roles and Responsibilities, Skills and Proficiency

Python Developer: Roles, Responsibilities, Skills, and Profi…

The canonical, “Python is a great first language”, elicited, “Python is a great last language!” — Noah Spurrier

 A rising programming language in the IT scenario, one of the most popular amongst the developer community — Python needs no introduction. Python programming has been in demand and so has been the demand for skilled Python developers. Simply learning Python may not suffice for a developer, understanding Python in detail, learning about the roles and responsibilities, skills, and salaries are important too.

Here are some statistics that assure you of the growing popularity of Python:

Python developers outnumber Java developers. — SlashData

Python is one of the official languages used by Google! — Quintagroup.com

Python is the most studied language and has overtaken Java in the list of popular languages used recently. — Jetbrains.com

Before we plunge into details of what Python developers do, let us quickly take a glance at the technology itself. 

Python — An Overview

Python is an interpreted, high-level, and general-purpose programming language. Python’s design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. — Wikipedia 

What Is Python Used For?

Python is used in different areas of application development like:

  • Python Web development.
  • Python App development.
  • Python Game development.
  • Data Science.
  • IoT Development Projects.
  • Machine Learning, and much more.

Key Features Of Python Programming Language:

  • Open source, free to use, and dynamically typed.
  • Easy to learn an object-oriented language.
  • Offers GUI programming support.
  • High-level and portable by nature.
  • An integrated and interpreted language.
  • Huge standard library support.

The world is witnessing a huge demand for Python developers. Python language is so efficient that the Python developer must possess certain skills and be prepared to adhere to pre-defined roles and responsibilities. Only then can a Python developer deliver excellent results. Let us have a look at what a Python developer does.

Python Developer, Roles and Responsibilities, Skills and Proficiency

What Is Python Developer?

A Python developer could be a software developer, web developer, data analyst, data scientist, automation tester, machine learning engineer, AI engineer — anyone of these with in-depth proficiency in Python. It depends upon the need of the project as to which role takes up the job of coding in Python.

Software developers in Python are supposed to manage the data interchange between the users and the server. They must develop the server-side logic assuring high-end performance. They must know the frontend technologies, integrate their work with the Python application, and develop the backend components, connecting the applications with third-party services.

How To Become A Python Developer?

The career path to becoming a successful Python developer is an interesting one and there are hordes of developers looking forward to it. Do you want to know how to become a Python Developer and develop a career in it? Here are key tips that can help in doing so:

  • Have your own GitHub repository built, to function more as your resume.
  • Build code that is easily readable, properly documented, and follows key coding standards.
  • Read good books on the technology and study peer code that is nicely developed.
  • Increase your technology skillset by knowing more about Python libraries.
  • Have good know-how of AI and ML since they go together with Python.
  • Take up good freelancing projects with Python, to help build a good experience.
  • Contribute to the open source community on platforms like GitHub.
  • Have your resume and profile updated to the latest on important platforms.
  • Follow online tutorials to help you develop your coding skills.
  • Master Python frameworks, ORM libraries, front-end technologies, and version control systems.

Python Developer Job Description — Role, Responsibilities, And Skills

Python Developer Responsibilities:

  • Writing efficient, reusable, testable, and scalable code.
  • Understanding, analyzing, and implementing — Business needs, feature modification requests, conversion into software components.
  • Integration of user-oriented elements into different applications, data storage solutions.
  • Developing — Backend components to enhance performance and receptiveness, server-side logic, and platform, statistical learning models, highly responsive web applications.
  • Designing and implementing — High availability and low latency applications, data protection, and security features.
  • Performance tuning and automation of application.
  • Testing and debugging software applications with Python test framework tools like Behave, Pytest, PyUnit, etc.
  • Enhancing the functionalities of current software systems.
  • Coming up with digital tools for online traffic monitoring.
  • Working with Python libraries like Pandas, NumPy, etc.
  • Creating predictive models for AI and ML-based features.
  • Keeping abreast with the latest technology and trends.
  • Fine-tune and develop AI/ML-based algorithms based on results.

Python Developer Skills Set

Here are some of the skills that are a must to become an efficient developer in Python:

Technical Skills

Good proficiency in:

  • Python frameworks like Django, Flask, etc.
  • Web frameworks and RESTful APIs.
  • Core Python fundamentals and programming.
  • Code packaging, release, and deployment.
  • Database knowledge.
  • Circles, conditional and control statements.
  • Object-relational mapping.
  • Server-side languages like Mako, etc.
  • Code versioning tools like Git, SVN, etc.

Fundamental understanding of:

  • Front-end technologies like JS, CSS3 and HTML5.
  • AI, ML, Deep Learning, Version Control, Neural networking.
  • Data visualization, statistics, data analytics.
  • Design principles that are executable for a scalable app.
  • Creating predictive models.
  • Libraries like Tensorflow, Scikit-learn, etc.
  • Multi-process architecture.
  • Basic knowledge about Object Relational Mapper libraries.
  • Ability to integrate databases and various data sources into a unified system.
  • Robust testing and debugging capabilities for tools like Selenium, etc.
  • Basic knowledge about Object Relational Mapper libraries.
  • Ability to integrate databases and various data sources into a unified system.
  • Robust testing and debugging capabilities for tools like Selenium, etc.

Soft Skills:

  • Communication skills — effective and amicable communication between groups, developers, testers, designers, and users.
  • Analytical skills — Good understanding of algorithms and logic that goes behind coding the application.
  • Competence to write clear, optimized, necessary code.
  • Data analytical, thinking, and troubleshooting skills.
  • Strong problem solving and project management skills.
  • Capability to solve complex technical issues, comprehend risks prior to the circumstance.
  • Ability to realize the large picture of the organizational data condition.
  • Collaboration and team-orientation.
  • Task organization, time management, and project management.
  • Creativity, originality, and out-of-the-box thinking capability.

Approximate Python Developer Salary

The approximate and average pay scale for Python developers depends on many other unseen factors like geographical location, demand, skillset, etc. A novice Python developer could get around $70,000-80,000 per annum, an experienced Python developer could get around $100,000-120,000 per annum. 

Though these may just give you an idea, here are few interesting reference links for getting an idea about the pay scale that a Python developer may get:

The average Python developer salary in the US is $79,395 per year. — Payscale 

The national average salary for a Python Developer is $76,526 in the United States. — Glassdoor 

The entry-level Python developer salary in the USA is $88,492. Middle developers earn $100,975 when experienced Python developers are paid on average $112,238 per year. — Indeed

Frequently Asked Questions (FAQ) About Python Developers

  • What is the role of a Python developer?

The role of a Python developer is to contribute to coding done using Python language in different areas of web development, application development, game development, data science, machine learning, AI, etc.

  • What are the skills required for a Python developer?

The skills required for Python developers are proficiency in Python frameworks, libraries, server-side languages, version control tools, core fundamentals of programming in Python, front-end technologies, AI, ML, communication skills, analytical skills, creative bent of mind, and much more.

  • Is Python a good skill to have?

Python is one of the most leading programming languages and hence is surely a great skill to possess as a career option.

  • Are Python developers in demand?

Python developers are much in demand since this language has been a preferred choice by many, across the globe.

  • What is the future of Python developers?

Python developers have a bright future and can build a good career in the areas of data science, ML, AI, data analytics, etc.

  • How does one be a good Python developer?

To become a good Python developer, it is important to grasp all the skills that are required to become one, as mentioned above. Also, reading good books and going through library support is also much needed. Inculcating soft and technical skills can help you become a good Python developer.

  • Where can I find Python developers?

The best way is to contact experienced IT solutions and service providers so that they can offer the best possible resource. There are many good sites where you can find freelancing Python developers like Toptal, GitHub Jobs, Stack Overflow, Hired, etc.

  • Is being a Python developer a good career?

Yes, certainly, becoming a Python developer is a good career move since it is quite rewarding and has a great market demand in the IT industry.

  • Is Python easier than Java?

Both are well-known languages. Java is a little complicated for newcomers and Python has an easy syntax to learn. Hence, Python has an easy learning curve than Java.

As Python Developers Rise In Demand

Python is a rapidly expanding, continuously developing, and general-purpose language which is preferred by the world’s renowned enterprises. From startups to giant organizations and from web development to automatic scripts, Python developers have been tackling the challenges of today’s digital world with their proficiency and capabilities. 

Owing to its salient features, Python has emerged as the first choice of developers to create dynamic web applications, data science applications, AI and machine learning projects, and next-gen digital products. The year to come shall witness Python development as one of the most desired programming concepts and an upsurge in the demand for Python developers.

Source link

I Built a Telnet App in 2021 With WebAssembly

I Built a Telnet App in 2021 With WebAssembly

I love the aesthetics of terminals and I’m not the only one. There is a whole subreddit dedicated to people sharing their desktops and showcasing different terminal setups. Last year, I spent time working on an innovative WebAssembly runtime called Lunatic. Recently, we landed TCP support and I was super excited to start building real-world applications with it, and what would be a better fit than a terminal based chat server with a retro vibe?

It took me around a week to build it with Rust + Lunatic and you can check out the code here. If you would like to try it out you can connect to it with:

While writing the server, I ran into many interesting problems and would like to share here how I leveraged the power of Lunatic to overcome them.


The reason I picked telnet is that the specification is simple enough to read through and implement in a short time. It’s a small layer on top of TCP and as mentioned before we had TCP already working. On the other hand, telnet is a really limiting protocol and I needed to get creative while building a chat application on top of it.

The first issue I encountered was the line based nature of terminals. You write a command, hit enter and the terminal prints out some text. This doesn’t go well with the UI of a chat app where messages can come in at any time. What are you supposed to do when new text arrives and the user has already partially written her own message? Override the user’s input? Print the new message after the input?

One solution would be to buffer all messages until the user hits enter and then just dump all the ones that arrived in the meantime at once, but this can’t work as we would rely on the user to keep hitting enter to read new messages.

It became clear that I needed to use some kind of terminal user interface where I render separately all the incoming messages from the user who is currently typing. It’s possible to do this by using a few extensions to the telnet protocol. Once the telnet client connects I send it the following instructions:

  1. Don’t echo anything that the user is typing, let me be in charge of printing in the terminal.
  2. Don’t buffer messages, send each keystroke to the server.
  3. Report size changes of the terminal.

This allows me to construct the UI on the server and just send a sequence of terminal escape characters back to bring the user’s terminal up to date. On each keystroke or message received the UI is updated.

Massive Concurrency

For this to work, we need to permanently keep the telnet connection open and periodically send data through it. This is a perfect use case for Lunatic’s Processes, they are designed for massive concurrency. Each client’s connection is handled in a separate Process.

Not to be confused with Operating System processes, Lunatic’s Processes are lightweight and also known as green threads (but isolated) or go-routines in other runtimes. They are fast to create, have a small memory footprint and a low scheduling overhead. All Processes are preemptively scheduled and they can’t spend too much time running without yielding and giving others a fair share of the resources. This keeps all connections responsive in an environment where most of the time is spent waiting on I/O.

Interop With Existing Libraries

Luckily I could make use of existing Rust libraries and didn’t need to reinvent the wheel. I used:

  1. Askma as a templating engine.
  2. TUI as the rendering engine.
  3. Chrono for date formatting.

They all compiled to WebAssembly without issues. I just needed to provide a telnet backend for TUI, but I could reuse most of the code from the termion crate (sadly it has no Windows support for now).

TUI works in a somewhat similar way to React.js, you update your state and just call a render method. It will re-render the UI and send back to the client the minimal amount of changes in the form of terminal escape characters.

State Management

A big part of programming is state management. Your application getting into a state that you couldn’t predict while writing the code is a big source of bugs, and Lunatic tries to simplify this by allowing you to isolate the state into separate processes.

From the perspective of a process, it owns the whole memory and can’t influence the memory of other processes in any way, not even by unsafe pointer dereferencing. This is a result of building them on top of WebAssembly instances. The only way processes can talk between each other is through message passing.

This greatly simplifies reasoning about state changes. You only need to think about what state you are in and how the next message will influence the state change. It makes it a lot easier to debug once you find yourself in an undesirable state. Let’s look at a concrete code sample from the implementation:

We can see that the process has a few local variables to keep track of its state:

  • How many clients are connected.
  • Which channels are available.
  • If a new user joins what username should be assigned.
  • Which usernames are taken.

Afterwards the Process just runs in a loop waiting on messages. If a new client is connected the server receives a ServerMessage::Joined message. It will then update the total count of users, assign a new username to the client and send back a message notifying the client about the assigned username.

The client’s process is similarly structured, it keeps a state of the current input box for each channel and all received messages for the channels. The client’s process can receive 2 types of messages:

  • Keystrokes coming from the telnet connection.
  • New chat messages coming from all subscribed channels.

For each keystroke we update the current channel’s input box or attach the new message to the history of messages in the channel.

If we have such an architecture and run into a bug, let’s say the number of connected users shown is wrong, there is only one source of truth here and we know exactly where this information came from. We just need to figure out how we got into this state.

Other Benefits

There are some not so obvious additional benefits that we get from Lunatic.

If a client’s process receives some malicious data from the telnet connection and crashes, it will only terminate the existing connection. It can’t access the state of any other Processes. In my first implementation I was often using .unwrap in the code, following Erlang’s let it crash philosophy and knowing that if I see any crashes in the logs I can always later investigate why they happened, but the application should continue running.

The message sending implementation uses Smol’s channels underneath, but you may be surprised not to see any async or .await keywords in the code. The reason for this is that Lunatic abstracts away the asynchronous code and you can just write seemingly blocking code, but it actually never blocks the underlying thread and takes full advantage of async Rust. This is a whole topic on its own so I will leave it for another blog post.

Lunatic works with any code that can compile to WebAssembly, and as I have shown earlier a lot of libraries just work out of the box. You can also link C code into your Rust application while compiling to WebAssembly. One big pain point when using C from Erlang is that you need to be extremely careful in your code, because if something crashes it will take the whole VM down. Or if you spend too much time in the C part it will block the scheduler from using the thread and endanger the responsiveness of your system. Lunatic solves both of these problems. The reduction counter is inserted before the WebAssembly code is JIT translated to machine code and will also be part of the “native” C code, allowing the scheduler to preempt it. A crash still stays isolated thanks to WebAssembly sandboxing properties.


In the end, the chat server will remain a nice toy application and you should not use it for more serious use cases as telnet doesn’t encrypt any of the data sent to the server.

However, it’s a really good feeling to get something like this running on a runtime you have built. While developing the chat application I found a few bugs in the runtime itself, so it was totally worth creating this app . I’m really looking forward to gradually moving away from building Lunatic and building amazing applications with it. I was also positively surprised how well the chat app is working, being the first real word app built on Lunatic.

I think that we are finally at the point where WebAssembly is mature enough to be used in serious applications, and I strongly believe that WebAssembly on the backend is going to play an important role in the future.

Source link

Teaching Web Dev for Free is Good Business

Teaching Web Dev for Free is Good Business

It feels like a trend (and a smart one) for tech platforms to invest in really high-quality learning material for their platform. Let’s have a gander.

Webflow University

Surely Webflow is thinking: if people invest in learning Webflow, they’ll be able to build what they need for themselves and their clients in Weblow, and they’ll stick around and be a good customer.

Jamstack Explorers

Surely Netlify is thinking: if people really grok Jamstack, they’ll build their existing and future sites using it. They’ll get comfortable using Netlify’s features to solve their problems, and they’ll stick around and be a good customer.

Salesforce Trailhead

Surely Salesforce is thinking: if we train people to learn Salesforce and build Salesforce-specific software, not only will they be a good customer, but they’ll bring more customers to us and help big companies stay good customers.

Figma Crash Course

This is not created by Figma themselves, but by Pablo Stanley, who must be thinking: I can teach people to use Figma, and along the way show them how cool and powerful Blush is, which will gain Blush good customers.

Apollo Odyssey

Surely Apollo is thinking: if y’all know GraphQL, and learned it in the context of Apollo, you probably continue using Apollo and bring it to the teams you’re on, which might make for great customers.

WP Courses 

This one is an outlier because these are paid courses, but my guess is that Automattic is thinking: there is already a ton of WordPress learning material out there, why not leverage our brand and deep expertise to make content people are willing to pay for.

Git Tutorials & Training

Surely Atlassian is thinking: if we are the place where people literally learned Git, we can sprinkle in our tooling into those lessons, and you’ll use those tools for your Git workflow, which will follow you through your entire developer career. Not to mention this is good SEO juice.

GitHub does the same thing.

Helping your customers learn your platform is certainly not a new concept. The word “webinar” exists after all. It’s a funny word, but effective. For example, AWS Marketplace sponsors CodePen emails sometimes with the idea of getting people to attend webinars about certain technologies. Wanna learn about Apache Kafka? You can do that for free coming up Thursday, February 25th. Surely AWS is thinking if people learn how this technology works, they’ll use AWS and AWS Marketplace partners to spin it up when they get to using it.

Cypress publishes their webinars. Appcues publishes their webinars. It’s not rare.

What feels a new here is the idea of packaging up learning material on a microsite with a fancy design and making it feel in-line with modern learning platforms. Like you are going to some expensive code school, except you’re getting it for free.

I’m a fan of all this. It’s good marketing for companies. It’s a good learning opportunity for everyone else. It’s also very biased. Learning materials you get directly from companies is going to tell you all about how great the technology of that company is. You should know that going in, if it’s isn’t obvious.

I’m also a fan—perhaps an even bigger fan—of paying for high-quality learning material. Our learning partner, Frontend Masters, has no particular bias to technology because you’re their customer. If they help you, they succeed and you succeed as well.

Source link