Показаны сообщения с ярлыком dev. Показать все сообщения
Показаны сообщения с ярлыком dev. Показать все сообщения

пятница, 5 января 2018 г.

Maker's Schedule vs Manager's Schedule

Kind of classic already but most companies (even in the whole Silicon Valley) still don't follow it:
July 2009

One reason programmers dislike meetings so much is that they're on a different type of schedule from other people. Meetings cost them more.

There are two types of schedule, which I'll call the manager's schedule and the maker's schedule. The manager's schedule is for bosses. It's embodied in the traditional appointment book, with each day cut into one hour intervals. You can block off several hours for a single task if you need to, but by default you change what you're doing every hour.

When you use time that way, it's merely a practical problem to meet with someone. Find an open slot in your schedule, book them, and you're done.

Most powerful people are on the manager's schedule. It's the schedule of command. But there's another way of using time that's common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can't write or program well in units of an hour. That's barely enough time to get started.

When you're operating on the maker's schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in. Plus you have to remember to go to the meeting. That's no problem for someone on the manager's schedule. There's always something coming on the next hour; the only question is what. But when someone on the maker's schedule has a meeting, they have to think about.
For someone on the maker's schedule, having a meeting is like throwing an exception. It doesn't merely cause you to switch from one task to another; it changes the mode in which you work.
.... 

Here is the full article from Y-Combinator guys here.

воскресенье, 14 июля 2013 г.

ultimate-stress: simple and fast stress-test framework

This post is about stress test framework mainly for java projects but can easily be used for others (from any machine with java7+), as there is a support for http requests with template engine out-of-box.

вторник, 28 мая 2013 г.

2 days of integration of osgi, hadoop and hbase

Spent almost 2 days trying to connect to local hbase from OSGI.
The problem is that hbase client uses hadoop which had this bug when run in containers (osgi, tomcat etc).
Bug tracker guys finally submit a fix to legacy 0.23 branch with fix, so I tried it, but it failed with source/api incompatibility (this issue):
java.lang.NoSuchMethodError: org.apache.hadoop.net.NetUtils.getInputStream(Ljava/net/Socket;)Ljava/io/InputStream;
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:363)
    at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:1046)
...

What I've found in the sources is that - hbase calls this static method
...
public static java.io.InputStream getInputStream(Socket socket) throws IOException
...
but 0.23.x branch latest version has this
...
public static org.apache.hadoop.net.SocketInputWrapper getInputStream(java.net.Socket socket) throws java.io.IOException
...

Do you see the issue? I don't yet. Normally the second can be used in any place where the fist does... But still it fails either due to OSGI some classloading issue or some implicit hbase/hadoop integration issues, I'm not clear on this yet.

What could I do?
I tried orderly downgrading from 0.23.7 to 0.23.1 (just in case), and fortunately 0.23.1 - worked! It has the same static signiture.

So, if you need to connect to hbase from osgi - you'll have to downgrade required hadoop libs to 0.23.1. Seems there is yet another annoying OSGI-specific bug.

SUMMARY: you can add frameworks and components to your java app just adding their dependencies if you don't have OSGI... because otherwise you'll be dancing with tambourines for days and hacking to get it working!

вторник, 10 июля 2012 г.

netty 3.5.1 bundle in Felix 3.2.1 osgi Container = ClassNotFoundException

netty 3.5.1 started in osgi (felix 3.2.1):

...
[org.jboss.netty.util.internal.QueueFactory] - Unable to instance LinkedTransferQueue, fallback to LegacyLinkedTransferQueue
java.lang.NoClassDefFoundError: Could not initialize class org.jboss.netty.util.internal.LinkedTransferQueue
 at org.jboss.netty.util.internal.QueueFactory.createQueue(QueueFactory.java:53) ~[na:na]
 at org.jboss.netty.channel.socket.nio.AbstractNioWorker.(AbstractNioWorker.java:111) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioWorker.(NioWorker.java:44) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioWorkerPool.createWorker(NioWorkerPool.java:34) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioWorkerPool.createWorker(NioWorkerPool.java:26) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.AbstractNioWorkerPool.(AbstractNioWorkerPool.java:58) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioWorkerPool.(NioWorkerPool.java:29) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory.(NioClientSocketChannelFactory.java:149) ~[netty-3.5.1.Final.jar:na]
 at org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory.(NioClientSocketChannelFactory.java:114) ~[netty-3.5.1.Final.jar:na]
...

If you debug and dig into netty source code - you'll find more descriptive exception: java.lang.ClassNotFoundException: sun.misc.Unsafe not found by org.jboss.netty

The problem seems that osgi container doesn't normally expose sun.misc.* internals, so the application cannot find it, though it's Oracle Jdk 1.6 with this stuff inside.

Looking further to the source code - you'll find the workaround: -Dorg.jboss.netty.tryUnsafe=false

p.s. issue discussion on the netty github tracker

четверг, 7 июня 2012 г.

Bazaar + Intellij IDEA = ?

После столь стремительного фидбека по поводу git в идее, очень удивляет ситуция с bazaar в идее. Плагин - уже не работает сначала этого года - запрос дифа между 2 ревизиями в истории например (аналогично падает на коммите и видимо много где еще):

rg.emergent.bzr4j.intellij.BzrFileRevision.loadContent()[B: org.emergent.bzr4j.intellij.BzrFileRevision.loadContent()[B
java.lang.AbstractMethodError: org.emergent.bzr4j.intellij.BzrFileRevision.loadContent()[B
    at com.intellij.openapi.vcs.history.FileHistoryPanelImpl$TreeNodeOnVcsRevision.loadContent(FileHistoryPanelImpl.java:1353)
    at com.intellij.openapi.vcs.history.VcsHistoryUtil.loadRevisionContent(VcsHistoryUtil.java:145)
    at com.intellij.openapi.vcs.history.VcsHistoryUtil.showDiff(VcsHistoryUtil.java:81)
    at com.intellij.openapi.vcs.history.FileHistoryPanelImpl$13.run(FileHistoryPanelImpl.java:642)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:469)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:218)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:169)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:378)
    at com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.java:434)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:145)


- баг на это конечно есть, прошло уже полгода...

Плагин видимо чисто опенсорсный, поддерживаемый парой человек, иначе не понимаю как это объяснить. Проблема в том, что он единственный, другого плагина в идее к bzr вроде как нет (

среда, 30 мая 2012 г.

Git + Intellij IDEA

какая же крутая поддержки git в идее: все летает, все  под рукой, просто и удобно, на своих местах, очень юзабельно.
Вызов любой сложной дорогостоящей операции - секунда, две в худшем случае.

p.s. svn, perforce-ы и иже с ними - как страшный сон =)

вторник, 22 мая 2012 г.

maven bugs

все-таки windows для java разработки не тру, даже под cygwin: maven + git + cygwin = пара часов поисков веселого бага - MRELEASE-581 Git relative pathing broken with release plugin

четверг, 2 февраля 2012 г.

faced gotcha: puzzle with google account in android emulator

When creating your device in AVD - if you select configuration by android version like android 2.2 - you 'll fail to add google account on it ))

Only if you select device configuration by Google API Version (like API Level 8) - you'll get an ability to have google/gmail sign-on on you emulator. Quite a funny.

- related SO question.